<!-- HTML header for doxygen 1.8.3.1-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>AngelScript: asIScriptEngine Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="test/javascript" src="touch.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="aslogo_small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">AngelScript
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classas_i_script_engine.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="classas_i_script_engine-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">asIScriptEngine Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>The engine interface.  
 <a href="classas_i_script_engine.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Memory management</div></td></tr>
<tr class="memitem:aa95a5d9b5d9e7e6a230fedf056eaf8ce"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#aa95a5d9b5d9e7e6a230fedf056eaf8ce">AddRef</a> () const =0</td></tr>
<tr class="memdesc:aa95a5d9b5d9e7e6a230fedf056eaf8ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increase reference counter.  <a href="#aa95a5d9b5d9e7e6a230fedf056eaf8ce">More...</a><br/></td></tr>
<tr class="separator:aa95a5d9b5d9e7e6a230fedf056eaf8ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae91a45da75af9234b87e825b5c08b81"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#aae91a45da75af9234b87e825b5c08b81">Release</a> () const =0</td></tr>
<tr class="memdesc:aae91a45da75af9234b87e825b5c08b81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrease reference counter.  <a href="#aae91a45da75af9234b87e825b5c08b81">More...</a><br/></td></tr>
<tr class="separator:aae91a45da75af9234b87e825b5c08b81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28c3800620d4aeaca75d084391eb758e"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a28c3800620d4aeaca75d084391eb758e">ShutDownAndRelease</a> ()=0</td></tr>
<tr class="memdesc:a28c3800620d4aeaca75d084391eb758e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shuts down the engine then decrease the reference counter.  <a href="#a28c3800620d4aeaca75d084391eb758e">More...</a><br/></td></tr>
<tr class="separator:a28c3800620d4aeaca75d084391eb758e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Engine properties</div></td></tr>
<tr class="memitem:a1bce4e5f573a2ca0ff55163e28f761dd"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a1bce4e5f573a2ca0ff55163e28f761dd">SetEngineProperty</a> (<a class="el" href="angelscript_8h.html#a53c2e8a74ade77c928316396394ebe0f">asEEngineProp</a> property, <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> value)=0</td></tr>
<tr class="memdesc:a1bce4e5f573a2ca0ff55163e28f761dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dynamically change some engine properties.  <a href="#a1bce4e5f573a2ca0ff55163e28f761dd">More...</a><br/></td></tr>
<tr class="separator:a1bce4e5f573a2ca0ff55163e28f761dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5531bf5310a0c933aa698725a6828e5f"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a5531bf5310a0c933aa698725a6828e5f">GetEngineProperty</a> (<a class="el" href="angelscript_8h.html#a53c2e8a74ade77c928316396394ebe0f">asEEngineProp</a> property) const =0</td></tr>
<tr class="memdesc:a5531bf5310a0c933aa698725a6828e5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve current engine property settings.  <a href="#a5531bf5310a0c933aa698725a6828e5f">More...</a><br/></td></tr>
<tr class="separator:a5531bf5310a0c933aa698725a6828e5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Compiler messages</div></td></tr>
<tr class="memitem:a74192fe950808eb72a64e3e371f0ea02"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a74192fe950808eb72a64e3e371f0ea02">SetMessageCallback</a> (const <a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> &amp;callback, void *obj, <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> callConv)=0</td></tr>
<tr class="memdesc:a74192fe950808eb72a64e3e371f0ea02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a message callback that will receive compiler messages.  <a href="#a74192fe950808eb72a64e3e371f0ea02">More...</a><br/></td></tr>
<tr class="separator:a74192fe950808eb72a64e3e371f0ea02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada64567fc9621e5e98160c7f03efa064"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ada64567fc9621e5e98160c7f03efa064">ClearMessageCallback</a> ()=0</td></tr>
<tr class="memdesc:ada64567fc9621e5e98160c7f03efa064"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears the registered message callback routine.  <a href="#ada64567fc9621e5e98160c7f03efa064">More...</a><br/></td></tr>
<tr class="separator:ada64567fc9621e5e98160c7f03efa064"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a936ce6566af958bb75ba1c0945d8b03a"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a936ce6566af958bb75ba1c0945d8b03a">WriteMessage</a> (const char *section, int row, int col, <a class="el" href="angelscript_8h.html#a8badcd23652646db5c5c6981dc73d4f5">asEMsgType</a> type, const char *message)=0</td></tr>
<tr class="memdesc:a936ce6566af958bb75ba1c0945d8b03a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes a message to the message callback.  <a href="#a936ce6566af958bb75ba1c0945d8b03a">More...</a><br/></td></tr>
<tr class="separator:a936ce6566af958bb75ba1c0945d8b03a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">JIT compiler</div></td></tr>
<tr class="memitem:aee4f910163604203a27db1ffea3b1c9c"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#aee4f910163604203a27db1ffea3b1c9c">SetJITCompiler</a> (<a class="el" href="classas_i_j_i_t_compiler.html">asIJITCompiler</a> *compiler)=0</td></tr>
<tr class="memdesc:aee4f910163604203a27db1ffea3b1c9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the JIT compiler.  <a href="#aee4f910163604203a27db1ffea3b1c9c">More...</a><br/></td></tr>
<tr class="separator:aee4f910163604203a27db1ffea3b1c9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fb6db9085df3c7d487c0d58de76bb83"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_j_i_t_compiler.html">asIJITCompiler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a2fb6db9085df3c7d487c0d58de76bb83">GetJITCompiler</a> () const =0</td></tr>
<tr class="memdesc:a2fb6db9085df3c7d487c0d58de76bb83"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the JIT compiler.  <a href="#a2fb6db9085df3c7d487c0d58de76bb83">More...</a><br/></td></tr>
<tr class="separator:a2fb6db9085df3c7d487c0d58de76bb83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Global functions</div></td></tr>
<tr class="memitem:a2f84b9b51733f22c68b8448b02c2f1c7"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a2f84b9b51733f22c68b8448b02c2f1c7">RegisterGlobalFunction</a> (const char *declaration, const <a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> &amp;funcPointer, <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> callConv, void *auxiliary=0)=0</td></tr>
<tr class="memdesc:a2f84b9b51733f22c68b8448b02c2f1c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a global function.  <a href="#a2f84b9b51733f22c68b8448b02c2f1c7">More...</a><br/></td></tr>
<tr class="separator:a2f84b9b51733f22c68b8448b02c2f1c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72aa1a3a5ac88a5a1dba4fa3655141d6"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a72aa1a3a5ac88a5a1dba4fa3655141d6">GetGlobalFunctionCount</a> () const =0</td></tr>
<tr class="memdesc:a72aa1a3a5ac88a5a1dba4fa3655141d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of registered functions.  <a href="#a72aa1a3a5ac88a5a1dba4fa3655141d6">More...</a><br/></td></tr>
<tr class="separator:a72aa1a3a5ac88a5a1dba4fa3655141d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf2b79cef75adb4099a24e3412e4ea79"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#aaf2b79cef75adb4099a24e3412e4ea79">GetGlobalFunctionByIndex</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> index) const =0</td></tr>
<tr class="memdesc:aaf2b79cef75adb4099a24e3412e4ea79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the registered function.  <a href="#aaf2b79cef75adb4099a24e3412e4ea79">More...</a><br/></td></tr>
<tr class="separator:aaf2b79cef75adb4099a24e3412e4ea79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42edd02e95731c795e13706400e8665a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a42edd02e95731c795e13706400e8665a">GetGlobalFunctionByDecl</a> (const char *declaration) const =0</td></tr>
<tr class="memdesc:a42edd02e95731c795e13706400e8665a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the registered function.  <a href="#a42edd02e95731c795e13706400e8665a">More...</a><br/></td></tr>
<tr class="separator:a42edd02e95731c795e13706400e8665a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Global properties</div></td></tr>
<tr class="memitem:aacd32f32b2922b8ffaed204812013169"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#aacd32f32b2922b8ffaed204812013169">RegisterGlobalProperty</a> (const char *declaration, void *pointer)=0</td></tr>
<tr class="memdesc:aacd32f32b2922b8ffaed204812013169"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a global property.  <a href="#aacd32f32b2922b8ffaed204812013169">More...</a><br/></td></tr>
<tr class="separator:aacd32f32b2922b8ffaed204812013169"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa69f6b37f9c7bdf9b52b9c1692daf048"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#aa69f6b37f9c7bdf9b52b9c1692daf048">GetGlobalPropertyCount</a> () const =0</td></tr>
<tr class="memdesc:aa69f6b37f9c7bdf9b52b9c1692daf048"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of registered global properties.  <a href="#aa69f6b37f9c7bdf9b52b9c1692daf048">More...</a><br/></td></tr>
<tr class="separator:aa69f6b37f9c7bdf9b52b9c1692daf048"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93bd686853a48647d2136792e27380fb"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a93bd686853a48647d2136792e27380fb">GetGlobalPropertyByIndex</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> index, const char **name, const char **nameSpace=0, int *typeId=0, bool *isConst=0, const char **configGroup=0, void **pointer=0, <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> *accessMask=0) const =0</td></tr>
<tr class="memdesc:a93bd686853a48647d2136792e27380fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the detail on the registered global property.  <a href="#a93bd686853a48647d2136792e27380fb">More...</a><br/></td></tr>
<tr class="separator:a93bd686853a48647d2136792e27380fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07e85878869e4d0597c1177d767dc717"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a07e85878869e4d0597c1177d767dc717">GetGlobalPropertyIndexByName</a> (const char *name) const =0</td></tr>
<tr class="memdesc:a07e85878869e4d0597c1177d767dc717"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the index of the property.  <a href="#a07e85878869e4d0597c1177d767dc717">More...</a><br/></td></tr>
<tr class="separator:a07e85878869e4d0597c1177d767dc717"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91a4cc8af51ca439ca82b9b6630439b3"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a91a4cc8af51ca439ca82b9b6630439b3">GetGlobalPropertyIndexByDecl</a> (const char *decl) const =0</td></tr>
<tr class="memdesc:a91a4cc8af51ca439ca82b9b6630439b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the index of the property.  <a href="#a91a4cc8af51ca439ca82b9b6630439b3">More...</a><br/></td></tr>
<tr class="separator:a91a4cc8af51ca439ca82b9b6630439b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Object types</div></td></tr>
<tr class="memitem:a29c6c087c8c5b5cdb6271cfd161cc5a6"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a29c6c087c8c5b5cdb6271cfd161cc5a6">RegisterObjectType</a> (const char *obj, int byteSize, <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> flags)=0</td></tr>
<tr class="memdesc:a29c6c087c8c5b5cdb6271cfd161cc5a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a new object type.  <a href="#a29c6c087c8c5b5cdb6271cfd161cc5a6">More...</a><br/></td></tr>
<tr class="separator:a29c6c087c8c5b5cdb6271cfd161cc5a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33f3cd249307f5f11120a395579410f6"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a33f3cd249307f5f11120a395579410f6">RegisterObjectProperty</a> (const char *obj, const char *declaration, int byteOffset)=0</td></tr>
<tr class="memdesc:a33f3cd249307f5f11120a395579410f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a property for the object type.  <a href="#a33f3cd249307f5f11120a395579410f6">More...</a><br/></td></tr>
<tr class="separator:a33f3cd249307f5f11120a395579410f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d42c5d9fd06a07da279f491f8901317"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a1d42c5d9fd06a07da279f491f8901317">RegisterObjectMethod</a> (const char *obj, const char *declaration, const <a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> &amp;funcPointer, <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> callConv, void *auxiliary=0)=0</td></tr>
<tr class="memdesc:a1d42c5d9fd06a07da279f491f8901317"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a method for the object type.  <a href="#a1d42c5d9fd06a07da279f491f8901317">More...</a><br/></td></tr>
<tr class="separator:a1d42c5d9fd06a07da279f491f8901317"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad69bc821a7f1120369c1bd9526f41b9c"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ad69bc821a7f1120369c1bd9526f41b9c">RegisterObjectBehaviour</a> (const char *obj, <a class="el" href="angelscript_8h.html#a7e38df5b10ec8cbf2a688f1d114097c5">asEBehaviours</a> behaviour, const char *declaration, const <a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> &amp;funcPointer, <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> callConv, void *auxiliary=0)=0</td></tr>
<tr class="memdesc:ad69bc821a7f1120369c1bd9526f41b9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a behaviour for the object type.  <a href="#ad69bc821a7f1120369c1bd9526f41b9c">More...</a><br/></td></tr>
<tr class="separator:ad69bc821a7f1120369c1bd9526f41b9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2d89b82561b7f9843f35693c664589f"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ae2d89b82561b7f9843f35693c664589f">RegisterInterface</a> (const char *name)=0</td></tr>
<tr class="memdesc:ae2d89b82561b7f9843f35693c664589f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a script interface.  <a href="#ae2d89b82561b7f9843f35693c664589f">More...</a><br/></td></tr>
<tr class="separator:ae2d89b82561b7f9843f35693c664589f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43bd2c12c94a55c22be76d209de93f1a"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a43bd2c12c94a55c22be76d209de93f1a">RegisterInterfaceMethod</a> (const char *intf, const char *declaration)=0</td></tr>
<tr class="memdesc:a43bd2c12c94a55c22be76d209de93f1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a script interface method.  <a href="#a43bd2c12c94a55c22be76d209de93f1a">More...</a><br/></td></tr>
<tr class="separator:a43bd2c12c94a55c22be76d209de93f1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2667fbe30dd00ed14bc14e6ef7fc725"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ac2667fbe30dd00ed14bc14e6ef7fc725">GetObjectTypeCount</a> () const =0</td></tr>
<tr class="memdesc:ac2667fbe30dd00ed14bc14e6ef7fc725"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of registered object types.  <a href="#ac2667fbe30dd00ed14bc14e6ef7fc725">More...</a><br/></td></tr>
<tr class="separator:ac2667fbe30dd00ed14bc14e6ef7fc725"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afac08d4f81e587031c7863574c6783ba"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#afac08d4f81e587031c7863574c6783ba">GetObjectTypeByIndex</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> index) const =0</td></tr>
<tr class="memdesc:afac08d4f81e587031c7863574c6783ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the object type interface by index.  <a href="#afac08d4f81e587031c7863574c6783ba">More...</a><br/></td></tr>
<tr class="separator:afac08d4f81e587031c7863574c6783ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bc0e560eb24c9f2cbba55b1d4b4ea4a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a3bc0e560eb24c9f2cbba55b1d4b4ea4a">GetObjectTypeByName</a> (const char *name) const =0</td></tr>
<tr class="separator:a3bc0e560eb24c9f2cbba55b1d4b4ea4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a413c50ec0410ba4597aa61a461a0c6f6"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a413c50ec0410ba4597aa61a461a0c6f6">GetObjectTypeByDecl</a> (const char *decl) const =0</td></tr>
<tr class="separator:a413c50ec0410ba4597aa61a461a0c6f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">String factory</div></td></tr>
<tr class="memitem:ac238aa44f91bad0b9025d956c5555575"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ac238aa44f91bad0b9025d956c5555575">RegisterStringFactory</a> (const char *datatype, const <a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> &amp;factoryFunc, <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> callConv, void *auxiliary=0)=0</td></tr>
<tr class="memdesc:ac238aa44f91bad0b9025d956c5555575"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers the string factory.  <a href="#ac238aa44f91bad0b9025d956c5555575">More...</a><br/></td></tr>
<tr class="separator:ac238aa44f91bad0b9025d956c5555575"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb3935d85494231e2f02af5816ba9830"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#afb3935d85494231e2f02af5816ba9830">GetStringFactoryReturnTypeId</a> (<a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> *flags=0) const =0</td></tr>
<tr class="memdesc:afb3935d85494231e2f02af5816ba9830"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the type id of the type that the string factory returns.  <a href="#afb3935d85494231e2f02af5816ba9830">More...</a><br/></td></tr>
<tr class="separator:afb3935d85494231e2f02af5816ba9830"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Default array type</div></td></tr>
<tr class="memitem:ac9451feece1297eba8d1649036039e82"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ac9451feece1297eba8d1649036039e82">RegisterDefaultArrayType</a> (const char *type)=0</td></tr>
<tr class="memdesc:ac9451feece1297eba8d1649036039e82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers the type that should be used as the default array.  <a href="#ac9451feece1297eba8d1649036039e82">More...</a><br/></td></tr>
<tr class="separator:ac9451feece1297eba8d1649036039e82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae86e5444979b0abd92777be83c53fc80"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ae86e5444979b0abd92777be83c53fc80">GetDefaultArrayTypeId</a> () const =0</td></tr>
<tr class="memdesc:ae86e5444979b0abd92777be83c53fc80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the type id of the registered type.  <a href="#ae86e5444979b0abd92777be83c53fc80">More...</a><br/></td></tr>
<tr class="separator:ae86e5444979b0abd92777be83c53fc80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Enums</div></td></tr>
<tr class="memitem:abed6e77f2a532c8a4f528650fa137d37"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#abed6e77f2a532c8a4f528650fa137d37">RegisterEnum</a> (const char *type)=0</td></tr>
<tr class="memdesc:abed6e77f2a532c8a4f528650fa137d37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers an enum type.  <a href="#abed6e77f2a532c8a4f528650fa137d37">More...</a><br/></td></tr>
<tr class="separator:abed6e77f2a532c8a4f528650fa137d37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d331153596dd39838f3bed2a861af18"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a4d331153596dd39838f3bed2a861af18">RegisterEnumValue</a> (const char *type, const char *name, int value)=0</td></tr>
<tr class="memdesc:a4d331153596dd39838f3bed2a861af18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers an enum value.  <a href="#a4d331153596dd39838f3bed2a861af18">More...</a><br/></td></tr>
<tr class="separator:a4d331153596dd39838f3bed2a861af18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b4307dab64061be43db84ffb97e3782"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a4b4307dab64061be43db84ffb97e3782">GetEnumCount</a> () const =0</td></tr>
<tr class="memdesc:a4b4307dab64061be43db84ffb97e3782"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of registered enum types.  <a href="#a4b4307dab64061be43db84ffb97e3782">More...</a><br/></td></tr>
<tr class="separator:a4b4307dab64061be43db84ffb97e3782"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adedc8b2ad11a84ec12aef4f98e27a4c4"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#adedc8b2ad11a84ec12aef4f98e27a4c4">GetEnumByIndex</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> index) const =0</td></tr>
<tr class="memdesc:adedc8b2ad11a84ec12aef4f98e27a4c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the registered enum type.  <a href="#adedc8b2ad11a84ec12aef4f98e27a4c4">More...</a><br/></td></tr>
<tr class="separator:adedc8b2ad11a84ec12aef4f98e27a4c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe82935052b582efbfd536ebda352e98"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#afe82935052b582efbfd536ebda352e98">GetEnumValueCount</a> (int enumTypeId) const =0</td></tr>
<tr class="separator:afe82935052b582efbfd536ebda352e98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc50d55c389409e3ff699a5e4d6e4ba5"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#acc50d55c389409e3ff699a5e4d6e4ba5">GetEnumValueByIndex</a> (int enumTypeId, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> index, int *outValue) const =0</td></tr>
<tr class="separator:acc50d55c389409e3ff699a5e4d6e4ba5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Funcdefs</div></td></tr>
<tr class="memitem:a03c1a2cc23ae4b742c927f3472a1a4f7"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a03c1a2cc23ae4b742c927f3472a1a4f7">RegisterFuncdef</a> (const char *decl)=0</td></tr>
<tr class="memdesc:a03c1a2cc23ae4b742c927f3472a1a4f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a function definition.  <a href="#a03c1a2cc23ae4b742c927f3472a1a4f7">More...</a><br/></td></tr>
<tr class="separator:a03c1a2cc23ae4b742c927f3472a1a4f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48aceb1556f88ce3bec3e0f84abe127f"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a48aceb1556f88ce3bec3e0f84abe127f">GetFuncdefCount</a> () const =0</td></tr>
<tr class="memdesc:a48aceb1556f88ce3bec3e0f84abe127f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of registered function definitions.  <a href="#a48aceb1556f88ce3bec3e0f84abe127f">More...</a><br/></td></tr>
<tr class="separator:a48aceb1556f88ce3bec3e0f84abe127f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4228220347347384c0aa0e0dd8308c6"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ad4228220347347384c0aa0e0dd8308c6">GetFuncdefByIndex</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> index) const =0</td></tr>
<tr class="memdesc:ad4228220347347384c0aa0e0dd8308c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a registered function definition.  <a href="#ad4228220347347384c0aa0e0dd8308c6">More...</a><br/></td></tr>
<tr class="separator:ad4228220347347384c0aa0e0dd8308c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Typedefs</div></td></tr>
<tr class="memitem:addb24466769dc52be96c7e37d5305245"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#addb24466769dc52be96c7e37d5305245">RegisterTypedef</a> (const char *type, const char *decl)=0</td></tr>
<tr class="memdesc:addb24466769dc52be96c7e37d5305245"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a typedef.  <a href="#addb24466769dc52be96c7e37d5305245">More...</a><br/></td></tr>
<tr class="separator:addb24466769dc52be96c7e37d5305245"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ebbbb86ea0e314cc2695f6276ebe507"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a0ebbbb86ea0e314cc2695f6276ebe507">GetTypedefCount</a> () const =0</td></tr>
<tr class="memdesc:a0ebbbb86ea0e314cc2695f6276ebe507"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of registered typedefs.  <a href="#a0ebbbb86ea0e314cc2695f6276ebe507">More...</a><br/></td></tr>
<tr class="separator:a0ebbbb86ea0e314cc2695f6276ebe507"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a635cd008ea123b510c66fbddcea735f5"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a635cd008ea123b510c66fbddcea735f5">GetTypedefByIndex</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> index) const =0</td></tr>
<tr class="memdesc:a635cd008ea123b510c66fbddcea735f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a registered typedef.  <a href="#a635cd008ea123b510c66fbddcea735f5">More...</a><br/></td></tr>
<tr class="separator:a635cd008ea123b510c66fbddcea735f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Configuration groups</div></td></tr>
<tr class="memitem:ac81014e50dd7efc1920adcb3fd2d1e5d"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ac81014e50dd7efc1920adcb3fd2d1e5d">BeginConfigGroup</a> (const char *groupName)=0</td></tr>
<tr class="memdesc:ac81014e50dd7efc1920adcb3fd2d1e5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a new dynamic configuration group.  <a href="#ac81014e50dd7efc1920adcb3fd2d1e5d">More...</a><br/></td></tr>
<tr class="separator:ac81014e50dd7efc1920adcb3fd2d1e5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4cc5ed7ea71811655f7910d298bb5a02"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a4cc5ed7ea71811655f7910d298bb5a02">EndConfigGroup</a> ()=0</td></tr>
<tr class="memdesc:a4cc5ed7ea71811655f7910d298bb5a02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ends the configuration group.  <a href="#a4cc5ed7ea71811655f7910d298bb5a02">More...</a><br/></td></tr>
<tr class="separator:a4cc5ed7ea71811655f7910d298bb5a02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab607be7fe727cdcce502d2beedbf4c0a"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ab607be7fe727cdcce502d2beedbf4c0a">RemoveConfigGroup</a> (const char *groupName)=0</td></tr>
<tr class="memdesc:ab607be7fe727cdcce502d2beedbf4c0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a previously registered configuration group.  <a href="#ab607be7fe727cdcce502d2beedbf4c0a">More...</a><br/></td></tr>
<tr class="separator:ab607be7fe727cdcce502d2beedbf4c0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a570df3e676f2d9e03e87d97b8cede1c7"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a570df3e676f2d9e03e87d97b8cede1c7">SetDefaultAccessMask</a> (<a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> defaultMask)=0</td></tr>
<tr class="memdesc:a570df3e676f2d9e03e87d97b8cede1c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the access mask that should be used for subsequent registered entities.  <a href="#a570df3e676f2d9e03e87d97b8cede1c7">More...</a><br/></td></tr>
<tr class="separator:a570df3e676f2d9e03e87d97b8cede1c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a605f114814f1f64804c04391816d948b"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a605f114814f1f64804c04391816d948b">SetDefaultNamespace</a> (const char *nameSpace)=0</td></tr>
<tr class="memdesc:a605f114814f1f64804c04391816d948b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current default namespace for registrations and searches.  <a href="#a605f114814f1f64804c04391816d948b">More...</a><br/></td></tr>
<tr class="separator:a605f114814f1f64804c04391816d948b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a257a25e285faa25e8cf08e455528def7"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a257a25e285faa25e8cf08e455528def7">GetDefaultNamespace</a> () const =0</td></tr>
<tr class="memdesc:a257a25e285faa25e8cf08e455528def7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current default namespace.  <a href="#a257a25e285faa25e8cf08e455528def7">More...</a><br/></td></tr>
<tr class="separator:a257a25e285faa25e8cf08e455528def7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Script modules</div></td></tr>
<tr class="memitem:a9f7cdc52b59034e6e55eb8a56b427aa4"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_module.html">asIScriptModule</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a9f7cdc52b59034e6e55eb8a56b427aa4">GetModule</a> (const char *module, <a class="el" href="angelscript_8h.html#ae4cf50de5273eb8c03c6e91e6e014f0c">asEGMFlags</a> flag=<a class="el" href="angelscript_8h.html#ae4cf50de5273eb8c03c6e91e6e014f0ca2feb963eb04c221e251867bc3a93d79d">asGM_ONLY_IF_EXISTS</a>)=0</td></tr>
<tr class="memdesc:a9f7cdc52b59034e6e55eb8a56b427aa4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return an interface pointer to the module.  <a href="#a9f7cdc52b59034e6e55eb8a56b427aa4">More...</a><br/></td></tr>
<tr class="separator:a9f7cdc52b59034e6e55eb8a56b427aa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb0ce55e5846eb18afdcf906aeb67cf7"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#afb0ce55e5846eb18afdcf906aeb67cf7">DiscardModule</a> (const char *module)=0</td></tr>
<tr class="memdesc:afb0ce55e5846eb18afdcf906aeb67cf7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Discard a module.  <a href="#afb0ce55e5846eb18afdcf906aeb67cf7">More...</a><br/></td></tr>
<tr class="separator:afb0ce55e5846eb18afdcf906aeb67cf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a457cf6202cc64ce8ee242dcc97d3422f"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a457cf6202cc64ce8ee242dcc97d3422f">GetModuleCount</a> () const =0</td></tr>
<tr class="memdesc:a457cf6202cc64ce8ee242dcc97d3422f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of modules.  <a href="#a457cf6202cc64ce8ee242dcc97d3422f">More...</a><br/></td></tr>
<tr class="separator:a457cf6202cc64ce8ee242dcc97d3422f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31b95df21e6f1990cf84b3b286067675"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_module.html">asIScriptModule</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a31b95df21e6f1990cf84b3b286067675">GetModuleByIndex</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> index) const =0</td></tr>
<tr class="memdesc:a31b95df21e6f1990cf84b3b286067675"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a module by index.  <a href="#a31b95df21e6f1990cf84b3b286067675">More...</a><br/></td></tr>
<tr class="separator:a31b95df21e6f1990cf84b3b286067675"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Script functions</div></td></tr>
<tr class="memitem:aaf67dc0b1f26be437ccbcc0ac5f330c9"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#aaf67dc0b1f26be437ccbcc0ac5f330c9">GetFunctionById</a> (int funcId) const =0</td></tr>
<tr class="memdesc:aaf67dc0b1f26be437ccbcc0ac5f330c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the function by its id.  <a href="#aaf67dc0b1f26be437ccbcc0ac5f330c9">More...</a><br/></td></tr>
<tr class="separator:aaf67dc0b1f26be437ccbcc0ac5f330c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4edfb4a4aae3156f5bcb50e68e19f394"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a4edfb4a4aae3156f5bcb50e68e19f394">GetFuncdefFromTypeId</a> (int typeId) const =0</td></tr>
<tr class="separator:a4edfb4a4aae3156f5bcb50e68e19f394"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Type identification</div></td></tr>
<tr class="memitem:a6df357909a4eeef6c244393fb4ba69a8"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a6df357909a4eeef6c244393fb4ba69a8">GetObjectTypeById</a> (int typeId) const =0</td></tr>
<tr class="separator:a6df357909a4eeef6c244393fb4ba69a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1f6fecb0f53fd7966736b01f65c3dcb"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ad1f6fecb0f53fd7966736b01f65c3dcb">GetTypeIdByDecl</a> (const char *decl) const =0</td></tr>
<tr class="memdesc:ad1f6fecb0f53fd7966736b01f65c3dcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a type id by declaration.  <a href="#ad1f6fecb0f53fd7966736b01f65c3dcb">More...</a><br/></td></tr>
<tr class="separator:ad1f6fecb0f53fd7966736b01f65c3dcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ae23fcde6af0d816ff97097cd443281"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a3ae23fcde6af0d816ff97097cd443281">GetTypeDeclaration</a> (int typeId, bool includeNamespace=false) const =0</td></tr>
<tr class="memdesc:a3ae23fcde6af0d816ff97097cd443281"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a type declaration.  <a href="#a3ae23fcde6af0d816ff97097cd443281">More...</a><br/></td></tr>
<tr class="separator:a3ae23fcde6af0d816ff97097cd443281"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39b7207a6c4c55a5cbf10eab2ccfb8e6"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a39b7207a6c4c55a5cbf10eab2ccfb8e6">GetSizeOfPrimitiveType</a> (int typeId) const =0</td></tr>
<tr class="memdesc:a39b7207a6c4c55a5cbf10eab2ccfb8e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the size of a primitive type.  <a href="#a39b7207a6c4c55a5cbf10eab2ccfb8e6">More...</a><br/></td></tr>
<tr class="separator:a39b7207a6c4c55a5cbf10eab2ccfb8e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55cc2d9592651538efcf79eb8106a867"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a55cc2d9592651538efcf79eb8106a867">GetTypeInfoById</a> (int typeId) const =0</td></tr>
<tr class="memdesc:a55cc2d9592651538efcf79eb8106a867"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the type interface for type.  <a href="#a55cc2d9592651538efcf79eb8106a867">More...</a><br/></td></tr>
<tr class="separator:a55cc2d9592651538efcf79eb8106a867"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea2583b8aa724779b7c37df8b7fa437b"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#aea2583b8aa724779b7c37df8b7fa437b">GetTypeInfoByName</a> (const char *name) const =0</td></tr>
<tr class="memdesc:aea2583b8aa724779b7c37df8b7fa437b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the type interface by name.  <a href="#aea2583b8aa724779b7c37df8b7fa437b">More...</a><br/></td></tr>
<tr class="separator:aea2583b8aa724779b7c37df8b7fa437b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab00808f9b762c4badf508ed511789d1b"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ab00808f9b762c4badf508ed511789d1b">GetTypeInfoByDecl</a> (const char *decl) const =0</td></tr>
<tr class="memdesc:ab00808f9b762c4badf508ed511789d1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a type by declaration.  <a href="#ab00808f9b762c4badf508ed511789d1b">More...</a><br/></td></tr>
<tr class="separator:ab00808f9b762c4badf508ed511789d1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Script execution</div></td></tr>
<tr class="memitem:a2630e1cd03ffab0fee9b820bf0afe42a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_context.html">asIScriptContext</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a2630e1cd03ffab0fee9b820bf0afe42a">CreateContext</a> ()=0</td></tr>
<tr class="memdesc:a2630e1cd03ffab0fee9b820bf0afe42a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new script context.  <a href="#a2630e1cd03ffab0fee9b820bf0afe42a">More...</a><br/></td></tr>
<tr class="separator:a2630e1cd03ffab0fee9b820bf0afe42a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3101479b4340bc16bb9acb8e8d554266"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a3101479b4340bc16bb9acb8e8d554266">CreateScriptObject</a> (const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *type)=0</td></tr>
<tr class="memdesc:a3101479b4340bc16bb9acb8e8d554266"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an object defined by its type.  <a href="#a3101479b4340bc16bb9acb8e8d554266">More...</a><br/></td></tr>
<tr class="separator:a3101479b4340bc16bb9acb8e8d554266"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2b1543ea6d24b912aebeb77e6764269"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ab2b1543ea6d24b912aebeb77e6764269">CreateScriptObjectCopy</a> (void *obj, const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *type)=0</td></tr>
<tr class="memdesc:ab2b1543ea6d24b912aebeb77e6764269"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a copy of a script object.  <a href="#ab2b1543ea6d24b912aebeb77e6764269">More...</a><br/></td></tr>
<tr class="separator:ab2b1543ea6d24b912aebeb77e6764269"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9de3c5e4465f699ad698740d6037e1a6"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a9de3c5e4465f699ad698740d6037e1a6">CreateUninitializedScriptObject</a> (const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *type)=0</td></tr>
<tr class="memdesc:a9de3c5e4465f699ad698740d6037e1a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an uninitialized script object defined by its type.  <a href="#a9de3c5e4465f699ad698740d6037e1a6">More...</a><br/></td></tr>
<tr class="separator:a9de3c5e4465f699ad698740d6037e1a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4a4cea1cfeea361b8a44d80f3d928e3"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ab4a4cea1cfeea361b8a44d80f3d928e3">CreateDelegate</a> (<a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *func, void *obj)=0</td></tr>
<tr class="memdesc:ab4a4cea1cfeea361b8a44d80f3d928e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a delegate for an object and method.  <a href="#ab4a4cea1cfeea361b8a44d80f3d928e3">More...</a><br/></td></tr>
<tr class="separator:ab4a4cea1cfeea361b8a44d80f3d928e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9180da5fd475f52916be6b39e522fabb"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a9180da5fd475f52916be6b39e522fabb">AssignScriptObject</a> (void *dstObj, void *srcObj, const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *type)=0</td></tr>
<tr class="memdesc:a9180da5fd475f52916be6b39e522fabb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy one script object to another.  <a href="#a9180da5fd475f52916be6b39e522fabb">More...</a><br/></td></tr>
<tr class="separator:a9180da5fd475f52916be6b39e522fabb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82873d3769ded547894a7c3d52c220fd"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a82873d3769ded547894a7c3d52c220fd">ReleaseScriptObject</a> (void *obj, const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *type)=0</td></tr>
<tr class="memdesc:a82873d3769ded547894a7c3d52c220fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Release the object pointer.  <a href="#a82873d3769ded547894a7c3d52c220fd">More...</a><br/></td></tr>
<tr class="separator:a82873d3769ded547894a7c3d52c220fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade1d309876c876c733d437a53e708c28"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ade1d309876c876c733d437a53e708c28">AddRefScriptObject</a> (void *obj, const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *type)=0</td></tr>
<tr class="memdesc:ade1d309876c876c733d437a53e708c28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increase the reference counter for the script object.  <a href="#ade1d309876c876c733d437a53e708c28">More...</a><br/></td></tr>
<tr class="separator:ade1d309876c876c733d437a53e708c28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32c9d9aac77a67eeb046fc67d7473fa2"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a32c9d9aac77a67eeb046fc67d7473fa2">RefCastObject</a> (void *obj, <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *fromType, <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *toType, void **newPtr, bool useOnlyImplicitCast=false)=0</td></tr>
<tr class="memdesc:a32c9d9aac77a67eeb046fc67d7473fa2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the handle on a successful reference cast to desired type.  <a href="#a32c9d9aac77a67eeb046fc67d7473fa2">More...</a><br/></td></tr>
<tr class="separator:a32c9d9aac77a67eeb046fc67d7473fa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a282b92f29b371545a6a6f6aa2ccf971e"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a282b92f29b371545a6a6f6aa2ccf971e">IsHandleCompatibleWithObject</a> (void *obj, int objTypeId, int handleTypeId) const =0</td></tr>
<tr class="separator:a282b92f29b371545a6a6f6aa2ccf971e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab31103bef62096445fe03632de691827"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_lockable_shared_bool.html">asILockableSharedBool</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ab31103bef62096445fe03632de691827">GetWeakRefFlagOfScriptObject</a> (void *obj, const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *type) const =0</td></tr>
<tr class="memdesc:ab31103bef62096445fe03632de691827"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the weak ref flag from the object.  <a href="#ab31103bef62096445fe03632de691827">More...</a><br/></td></tr>
<tr class="separator:ab31103bef62096445fe03632de691827"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Context pooling</div></td></tr>
<tr class="memitem:a32391ee83e58083b406ba068ab2ee049"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_context.html">asIScriptContext</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a32391ee83e58083b406ba068ab2ee049">RequestContext</a> ()=0</td></tr>
<tr class="memdesc:a32391ee83e58083b406ba068ab2ee049"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request a context.  <a href="#a32391ee83e58083b406ba068ab2ee049">More...</a><br/></td></tr>
<tr class="separator:a32391ee83e58083b406ba068ab2ee049"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22e42bf32902cbd6885731a6beeaca20"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a22e42bf32902cbd6885731a6beeaca20">ReturnContext</a> (<a class="el" href="classas_i_script_context.html">asIScriptContext</a> *ctx)=0</td></tr>
<tr class="memdesc:a22e42bf32902cbd6885731a6beeaca20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a context when it won't be used anymore.  <a href="#a22e42bf32902cbd6885731a6beeaca20">More...</a><br/></td></tr>
<tr class="separator:a22e42bf32902cbd6885731a6beeaca20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5ba9fe99b72c60392cdaeef164f2c65"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ae5ba9fe99b72c60392cdaeef164f2c65">SetContextCallbacks</a> (<a class="el" href="angelscript_8h.html#a23f3c055107b52e232a7884c4f649f22">asREQUESTCONTEXTFUNC_t</a> requestCtx, <a class="el" href="angelscript_8h.html#a87ef2f38dfff65c88902d346d752958e">asRETURNCONTEXTFUNC_t</a> returnCtx, void *param=0)=0</td></tr>
<tr class="memdesc:ae5ba9fe99b72c60392cdaeef164f2c65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register context callbacks for pooling.  <a href="#ae5ba9fe99b72c60392cdaeef164f2c65">More...</a><br/></td></tr>
<tr class="separator:ae5ba9fe99b72c60392cdaeef164f2c65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">String interpretation</div></td></tr>
<tr class="memitem:a57ecbd86ae9370684877c755e83cef0d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#a012a602727ca3fe1efa27053bc58cbca">asETokenClass</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a57ecbd86ae9370684877c755e83cef0d">ParseToken</a> (const char *string, size_t stringLength=0, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *tokenLength=0) const =0</td></tr>
<tr class="memdesc:a57ecbd86ae9370684877c755e83cef0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the class and length of the first token in the string.  <a href="#a57ecbd86ae9370684877c755e83cef0d">More...</a><br/></td></tr>
<tr class="separator:a57ecbd86ae9370684877c755e83cef0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Garbage collection</div></td></tr>
<tr class="memitem:a17511a1de72ecdb836b974768f2ec422"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a17511a1de72ecdb836b974768f2ec422">GarbageCollect</a> (<a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> flags=<a class="el" href="angelscript_8h.html#ac06582350753eb4d89d6ba9442eadf9da31e476bfb875b0f4fb209a3ef2540709">asGC_FULL_CYCLE</a>, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> numIterations=1)=0</td></tr>
<tr class="memdesc:a17511a1de72ecdb836b974768f2ec422"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform garbage collection.  <a href="#a17511a1de72ecdb836b974768f2ec422">More...</a><br/></td></tr>
<tr class="separator:a17511a1de72ecdb836b974768f2ec422"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a166e6cdd0cb35bcfd942824d8e882783"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a166e6cdd0cb35bcfd942824d8e882783">GetGCStatistics</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *currentSize, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *totalDestroyed=0, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *totalDetected=0, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *newObjects=0, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *totalNewDestroyed=0) const =0</td></tr>
<tr class="memdesc:a166e6cdd0cb35bcfd942824d8e882783"><td class="mdescLeft">&#160;</td><td class="mdescRight">Obtain statistics from the garbage collector.  <a href="#a166e6cdd0cb35bcfd942824d8e882783">More...</a><br/></td></tr>
<tr class="separator:a166e6cdd0cb35bcfd942824d8e882783"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52a7644b48cbc771e33db5070814f6df"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a52a7644b48cbc771e33db5070814f6df">NotifyGarbageCollectorOfNewObject</a> (void *obj, <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *type)=0</td></tr>
<tr class="memdesc:a52a7644b48cbc771e33db5070814f6df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Notify the garbage collector of a new object that needs to be managed.  <a href="#a52a7644b48cbc771e33db5070814f6df">More...</a><br/></td></tr>
<tr class="separator:a52a7644b48cbc771e33db5070814f6df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39a5f221baa01d43e7471c0e9f5378e4"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a39a5f221baa01d43e7471c0e9f5378e4">GetObjectInGC</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> idx, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *seqNbr=0, void **obj=0, <a class="el" href="classas_i_type_info.html">asITypeInfo</a> **type=0)=0</td></tr>
<tr class="memdesc:a39a5f221baa01d43e7471c0e9f5378e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets an object in the garbage collector.  <a href="#a39a5f221baa01d43e7471c0e9f5378e4">More...</a><br/></td></tr>
<tr class="separator:a39a5f221baa01d43e7471c0e9f5378e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58ceeafd780dea3543e0ede4106199fd"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a58ceeafd780dea3543e0ede4106199fd">GCEnumCallback</a> (void *reference)=0</td></tr>
<tr class="memdesc:a58ceeafd780dea3543e0ede4106199fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used by the garbage collector to enumerate all references held by an object.  <a href="#a58ceeafd780dea3543e0ede4106199fd">More...</a><br/></td></tr>
<tr class="separator:a58ceeafd780dea3543e0ede4106199fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">User data</div></td></tr>
<tr class="memitem:aabee8d6ef426c434adee85ec6d57f940"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#aabee8d6ef426c434adee85ec6d57f940">SetUserData</a> (void *data, <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> type=0)=0</td></tr>
<tr class="memdesc:aabee8d6ef426c434adee85ec6d57f940"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register the memory address of some user data.  <a href="#aabee8d6ef426c434adee85ec6d57f940">More...</a><br/></td></tr>
<tr class="separator:aabee8d6ef426c434adee85ec6d57f940"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a701aa6a7ddf51a22c62281f3dec9a772"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a701aa6a7ddf51a22c62281f3dec9a772">GetUserData</a> (<a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> type=0) const =0</td></tr>
<tr class="memdesc:a701aa6a7ddf51a22c62281f3dec9a772"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the previously registered user data.  <a href="#a701aa6a7ddf51a22c62281f3dec9a772">More...</a><br/></td></tr>
<tr class="separator:a701aa6a7ddf51a22c62281f3dec9a772"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8fa4fc9aacb99db6d4be0a5542b85e35"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a8fa4fc9aacb99db6d4be0a5542b85e35">SetEngineUserDataCleanupCallback</a> (<a class="el" href="angelscript_8h.html#ab4583fe7648248c59f525f944cfb9db1">asCLEANENGINEFUNC_t</a> callback, <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> type=0)=0</td></tr>
<tr class="memdesc:a8fa4fc9aacb99db6d4be0a5542b85e35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the function that should be called when the engine is destroyed.  <a href="#a8fa4fc9aacb99db6d4be0a5542b85e35">More...</a><br/></td></tr>
<tr class="separator:a8fa4fc9aacb99db6d4be0a5542b85e35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7523853b9a9bf7dab603fa6a06393d51"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a7523853b9a9bf7dab603fa6a06393d51">SetModuleUserDataCleanupCallback</a> (<a class="el" href="angelscript_8h.html#a90d681aba2f00b701425d4dbdca3375b">asCLEANMODULEFUNC_t</a> callback, <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> type=0)=0</td></tr>
<tr class="memdesc:a7523853b9a9bf7dab603fa6a06393d51"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the function that should be called when the module is destroyed.  <a href="#a7523853b9a9bf7dab603fa6a06393d51">More...</a><br/></td></tr>
<tr class="separator:a7523853b9a9bf7dab603fa6a06393d51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acaced7eb9ebe013ede23f7593daf58e3"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#acaced7eb9ebe013ede23f7593daf58e3">SetContextUserDataCleanupCallback</a> (<a class="el" href="angelscript_8h.html#a88ecc3288f67d86c6dd9d8d24d9980ca">asCLEANCONTEXTFUNC_t</a> callback, <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> type=0)=0</td></tr>
<tr class="memdesc:acaced7eb9ebe013ede23f7593daf58e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the function that should be called when a context is destroyed.  <a href="#acaced7eb9ebe013ede23f7593daf58e3">More...</a><br/></td></tr>
<tr class="separator:acaced7eb9ebe013ede23f7593daf58e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae75ee087fe6608cf0af1c24794ca73c7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#ae75ee087fe6608cf0af1c24794ca73c7">SetFunctionUserDataCleanupCallback</a> (<a class="el" href="angelscript_8h.html#ae396d162d9d46c34a7f197ecbc788dfa">asCLEANFUNCTIONFUNC_t</a> callback, <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> type=0)=0</td></tr>
<tr class="memdesc:ae75ee087fe6608cf0af1c24794ca73c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the function that should be called when a function is destroyed.  <a href="#ae75ee087fe6608cf0af1c24794ca73c7">More...</a><br/></td></tr>
<tr class="separator:ae75ee087fe6608cf0af1c24794ca73c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d4f19fe2d40d9da10c01a93f855b593"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a8d4f19fe2d40d9da10c01a93f855b593">SetObjectTypeUserDataCleanupCallback</a> (<a class="el" href="angelscript_8h.html#a89a55274ab9acfc45fcd29247299f42f">asCLEANTYPEINFOFUNC_t</a> callback, <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> type=0)=0</td></tr>
<tr class="separator:a8d4f19fe2d40d9da10c01a93f855b593"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa31e7c28c63a2c876d8e08305cf5d75"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#afa31e7c28c63a2c876d8e08305cf5d75">SetTypeInfoUserDataCleanupCallback</a> (<a class="el" href="angelscript_8h.html#a89a55274ab9acfc45fcd29247299f42f">asCLEANTYPEINFOFUNC_t</a> callback, <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> type=0)=0</td></tr>
<tr class="memdesc:afa31e7c28c63a2c876d8e08305cf5d75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the function that should be called when a type info is destroyed.  <a href="#afa31e7c28c63a2c876d8e08305cf5d75">More...</a><br/></td></tr>
<tr class="separator:afa31e7c28c63a2c876d8e08305cf5d75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4654e2cae0690c50e19b177f1ec54592"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_engine.html#a4654e2cae0690c50e19b177f1ec54592">SetScriptObjectUserDataCleanupCallback</a> (<a class="el" href="angelscript_8h.html#ac29678e8c7f48b9c2aaabae90ee258d1">asCLEANSCRIPTOBJECTFUNC_t</a> callback, <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> type=0)=0</td></tr>
<tr class="memdesc:a4654e2cae0690c50e19b177f1ec54592"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the function that should be called when a script object is destroyed.  <a href="#a4654e2cae0690c50e19b177f1ec54592">More...</a><br/></td></tr>
<tr class="separator:a4654e2cae0690c50e19b177f1ec54592"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The engine is the central object. It is where the application <a class="el" href="doc_register_api_topic.html">registers the application interface</a> that the scripts should be able to use, and it is where the application can <a class="el" href="doc_compile_script.html">request modules to build scripts</a> and <a class="el" href="doc_call_script_func.html">contexts to execute them</a>.</p>
<p>The engine instance is created with a call to <a class="el" href="angelscript_8h.html#acb6a62345d9cca6c9b5a3dac67d80d0b">asCreateScriptEngine</a>.</p>
<p>It is allowed to have multiple instances of script engines, but there is rarely a need for it. Even if the application needs to expose different interfaces to different types of scripts this can usually be accomplished through the use of <a class="el" href="doc_adv_dynamic_config.html">configuration groups</a> and <a class="el" href="doc_adv_access_mask.html">access profiles</a>. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="aa95a5d9b5d9e7e6a230fedf056eaf8ce"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::AddRef </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of references to this object.</dd></dl>
<p>Call this method when storing an additional reference to the object. Remember that the first reference that is received from <a class="el" href="angelscript_8h.html#acb6a62345d9cca6c9b5a3dac67d80d0b">asCreateScriptEngine</a> is already accounted for. </p>

</div>
</div>
<a class="anchor" id="ade1d309876c876c733d437a53e708c28"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::AddRefScriptObject </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>A pointer to the object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The type of the object.</td></tr>
  </table>
  </dd>
</dl>
<p>This calls the add ref method of the object to increase the reference count. </p>

</div>
</div>
<a class="anchor" id="a9180da5fd475f52916be6b39e522fabb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::AssignScriptObject </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>dstObj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>srcObj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">dstObj</td><td>A pointer to the destination object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">srcObj</td><td>A pointer to the source object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The type of the objects. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>One of the arguments is null </td></tr>
    <tr><td class="paramname">asNOT_SUPPORTED</td><td>The object type is a ref type and value assignment has been turned off</td></tr>
  </table>
  </dd>
</dl>
<p>This calls the assignment operator to copy the object from one to the other.</p>
<p>This only works for objects. </p>

</div>
</div>
<a class="anchor" id="ac81014e50dd7efc1920adcb3fd2d1e5d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::BeginConfigGroup </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>groupName</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">groupName</td><td>The name of the configuration group </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asNAME_TAKEN</td><td>Another group with the same name already exists. </td></tr>
    <tr><td class="paramname">asNOT_SUPPORTED</td><td>Nesting configuration groups is not supported.</td></tr>
  </table>
  </dd>
</dl>
<p>Starts a new dynamic configuration group. This group can be setup so that it is only visible to specific modules, and it can also be removed when it is no longer used.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_adv_dynamic_config.html">Dynamic configurations</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ada64567fc9621e5e98160c7f03efa064"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::ClearMessageCallback </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A negative value on error.</dd></dl>
<p>Call this method to remove the message callback. </p>

</div>
</div>
<a class="anchor" id="a2630e1cd03ffab0fee9b820bf0afe42a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_context.html">asIScriptContext</a>* asIScriptEngine::CreateContext </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A pointer to the new script context.</dd></dl>
<p>This method creates a context that will be used to execute the script functions. The context interface created will have its reference counter already increased.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classas_i_script_engine.html#a32391ee83e58083b406ba068ab2ee049">RequestContext</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ab4a4cea1cfeea361b8a44d80f3d928e3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a>* asIScriptEngine::CreateDelegate </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *&#160;</td>
          <td class="paramname"><em>func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">func</td><td>The object method </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>The object pointer </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The new delegate instance </dd></dl>

</div>
</div>
<a class="anchor" id="a3101479b4340bc16bb9acb8e8d554266"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptEngine::CreateScriptObject </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td>
          <td class="paramname"><em>type</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The type of the object to create. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the new object if successful, or null if not.</dd></dl>
<p>This method is used to create an object based on it's type. The method will call the object type's default factory. If the object type doesn't have a default factory the call will fail and no object will be created.</p>
<p>Created objects will have their reference counter set to 1 so the application needs to release the pointer when it will no longer use it.</p>
<p>If the type is a registered value type, then the memory for the object will be allocated using the <a class="el" href="angelscript_8h.html#a527ab125defc58aa40cc151a25582a31">default memory routine</a>. To destroy and and deallocate the object it is best to use <a class="el" href="classas_i_script_engine.html#a82873d3769ded547894a7c3d52c220fd">ReleaseScriptObject</a>.</p>
<p>The method only works for objects, for primitive types and object handles the method doesn't do anything and returns a null pointer. </p>

</div>
</div>
<a class="anchor" id="ab2b1543ea6d24b912aebeb77e6764269"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptEngine::CreateScriptObjectCopy </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>A pointer to the source object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The type of the object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the new object if successful, or null if not.</dd></dl>
<p>This method is used to create a copy of an existing object.</p>
<p>This only works for objects, for primitive types and object handles the method doesn't do anything and returns a null pointer. </p>

</div>
</div>
<a class="anchor" id="a9de3c5e4465f699ad698740d6037e1a6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptEngine::CreateUninitializedScriptObject </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td>
          <td class="paramname"><em>type</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The type of the object to create. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the new object if successful, or null if not.</dd></dl>
<p>This method can only be used to create instances of script classes.</p>
<p>The returned object will only be initialized so far that there are no invalid pointers or references. The constructor of the script class will not be invoked.</p>
<p>If the script class has any registered types as members, the default constructor for those members will be executed.</p>
<p>This method is meant for objects that will be initialized manually by the application, e.g. when restoring a serialized object. </p>

</div>
</div>
<a class="anchor" id="afb0ce55e5846eb18afdcf906aeb67cf7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::DiscardModule </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>module</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">module</td><td>The name of the module </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asNO_MODULE</td><td>The module was not found.</td></tr>
  </table>
  </dd>
</dl>
<p>Discards a module and frees its memory. Any pointers that the application holds to this module will be invalid after this call. </p>

</div>
</div>
<a class="anchor" id="a4cc5ed7ea71811655f7910d298bb5a02"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::EndConfigGroup </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A negative value on error </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asERROR</td><td>Can't end a group that hasn't been begun.</td></tr>
  </table>
  </dd>
</dl>
<p>Ends the current configuration group. Once finished a config group cannot be changed, but it can be removed when it is no longer used.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_adv_dynamic_config.html">Dynamic configurations</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a17511a1de72ecdb836b974768f2ec422"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::GarbageCollect </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a>&#160;</td>
          <td class="paramname"><em>flags</em> = <code><a class="el" href="angelscript_8h.html#ac06582350753eb4d89d6ba9442eadf9da31e476bfb875b0f4fb209a3ef2540709">asGC_FULL_CYCLE</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>numIterations</em> = <code>1</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Set to a combination of the <a class="el" href="angelscript_8h.html#ac06582350753eb4d89d6ba9442eadf9d">asEGCFlags</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">numIterations</td><td>The number of iterations to perform when not doing a full cycle </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 if the cycle wasn't completed, 0 if it was.</dd></dl>
<p>This method will free script objects that can no longer be reached. When the engine is released the garbage collector will automatically do a full cycle to release all objects still alive. If the engine is long living it is important to call this method every once in a while to free up memory allocated by the scripts. If a script does a lot of allocations before returning it may be necessary to implement a line callback function that calls the garbage collector during execution of the script.</p>
<p>It is not necessary to do a full cycle with every call. This makes it possible to spread out the garbage collection time over a large period, thus not impacting the responsiveness of the application.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_gc.html">Garbage collection</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a58ceeafd780dea3543e0ede4106199fd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::GCEnumCallback </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>reference</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">reference</td><td>A pointer to the referenced object.</td></tr>
  </table>
  </dd>
</dl>
<p>When processing the EnumReferences call the called object should call GCEnumCallback for each of the references it holds to other objects.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_gc_object.html">Garbage collected objects</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ae86e5444979b0abd92777be83c53fc80"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::GetDefaultArrayTypeId </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The type id, or a negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_TYPE</td><td>The default array type hasn't been registered. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a257a25e285faa25e8cf08e455528def7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* asIScriptEngine::GetDefaultNamespace </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The current default namespace </dd></dl>

</div>
</div>
<a class="anchor" id="a5531bf5310a0c933aa698725a6828e5f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> asIScriptEngine::GetEngineProperty </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a53c2e8a74ade77c928316396394ebe0f">asEEngineProp</a>&#160;</td>
          <td class="paramname"><em>property</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">property</td><td>One of the <a class="el" href="angelscript_8h.html#a53c2e8a74ade77c928316396394ebe0f">asEEngineProp</a> values. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The value of the property, or 0 if it is an invalid property.</dd></dl>
<p>Calling this method lets you determine the current value of the engine properties. </p>

</div>
</div>
<a class="anchor" id="adedc8b2ad11a84ec12aef4f98e27a4c4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a>* asIScriptEngine::GetEnumByIndex </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>The index of the enum type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The type info of the registered enum type, or null on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a4b4307dab64061be43db84ffb97e3782"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> asIScriptEngine::GetEnumCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of registered enum types. </dd></dl>

</div>
</div>
<a class="anchor" id="acc50d55c389409e3ff699a5e4d6e4ba5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* asIScriptEngine::GetEnumValueByIndex </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>enumTypeId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>outValue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000010">Deprecated:</a></b></dt><dd>Since 2.31.0. Use <a class="el" href="classas_i_type_info.html#aaece7c2106dbced04436b52515f1f7ac">asITypeInfo::GetEnumValueByIndex</a> instead. </dd></dl>

</div>
</div>
<a class="anchor" id="afe82935052b582efbfd536ebda352e98"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::GetEnumValueCount </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>enumTypeId</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000009">Deprecated:</a></b></dt><dd>Since 2.31.0. Use <a class="el" href="classas_i_type_info.html#abe22697bab6560c30c9b613187d6b4d7">asITypeInfo::GetEnumValueCount</a> instead. </dd></dl>

</div>
</div>
<a class="anchor" id="ad4228220347347384c0aa0e0dd8308c6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a>* asIScriptEngine::GetFuncdefByIndex </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>The index of the funcdef. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The type info of the funcdef.</dd></dl>
<p>This function does not increase the reference count of the returned function definition. </p>

</div>
</div>
<a class="anchor" id="a48aceb1556f88ce3bec3e0f84abe127f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> asIScriptEngine::GetFuncdefCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of registered funcdefs. </dd></dl>

</div>
</div>
<a class="anchor" id="a4edfb4a4aae3156f5bcb50e68e19f394"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a>* asIScriptEngine::GetFuncdefFromTypeId </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>typeId</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000011">Deprecated:</a></b></dt><dd>Since 2.31.0. Use <a class="el" href="classas_i_script_engine.html#a55cc2d9592651538efcf79eb8106a867">asIScriptEngine::GetTypeInfoById</a> instead. </dd></dl>

</div>
</div>
<a class="anchor" id="aaf67dc0b1f26be437ccbcc0ac5f330c9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a>* asIScriptEngine::GetFunctionById </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>funcId</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">funcId</td><td>The id of the function or method. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the function description interface, or null if not found.</dd></dl>
<p>This does not increment the reference count of the returned function interface. </p>

</div>
</div>
<a class="anchor" id="a166e6cdd0cb35bcfd942824d8e882783"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::GetGCStatistics </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *&#160;</td>
          <td class="paramname"><em>currentSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *&#160;</td>
          <td class="paramname"><em>totalDestroyed</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *&#160;</td>
          <td class="paramname"><em>totalDetected</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *&#160;</td>
          <td class="paramname"><em>newObjects</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *&#160;</td>
          <td class="paramname"><em>totalNewDestroyed</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">currentSize</td><td>The current number of objects known to the garbage collector. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">totalDestroyed</td><td>The total number of objects destroyed by the garbage collector. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">totalDetected</td><td>The total number of objects detected as garbage with circular references. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">newObjects</td><td>The current number of objects in the new generation. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">totalNewDestroyed</td><td>The total number of objects destroyed while still in the new generation.</td></tr>
  </table>
  </dd>
</dl>
<p>This method can be used to query the number of objects that the garbage collector is keeping track of. If the number is very large then it is probably time to call the <a class="el" href="classas_i_script_engine.html#a17511a1de72ecdb836b974768f2ec422">GarbageCollect</a> method so that some of the objects ca be freed.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_gc.html">Garbage collection</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a42edd02e95731c795e13706400e8665a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a>* asIScriptEngine::GetGlobalFunctionByDecl </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>declaration</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">declaration</td><td>The signature of the function. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The function object, or null on error. </dd></dl>

</div>
</div>
<a class="anchor" id="aaf2b79cef75adb4099a24e3412e4ea79"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a>* asIScriptEngine::GetGlobalFunctionByIndex </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>The index of the registered global function. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The function object, or null on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a72aa1a3a5ac88a5a1dba4fa3655141d6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> asIScriptEngine::GetGlobalFunctionCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of registered functions. </dd></dl>

</div>
</div>
<a class="anchor" id="a93bd686853a48647d2136792e27380fb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::GetGlobalPropertyByIndex </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&#160;</td>
          <td class="paramname"><em>nameSpace</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>typeId</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&#160;</td>
          <td class="paramname"><em>isConst</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&#160;</td>
          <td class="paramname"><em>configGroup</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void **&#160;</td>
          <td class="paramname"><em>pointer</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> *&#160;</td>
          <td class="paramname"><em>accessMask</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>The index of the global variable. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">name</td><td>Receives the name of the property. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">nameSpace</td><td>Receives the namespace of the property. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">typeId</td><td>Receives the typeId of the property. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">isConst</td><td>Receives the constness indicator of the property. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">configGroup</td><td>Receives the config group in which the property was registered. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">pointer</td><td>Receives the pointer of the property. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">accessMask</td><td>Receives the access mask of the property. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td><em>index</em> is too large. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa69f6b37f9c7bdf9b52b9c1692daf048"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> asIScriptEngine::GetGlobalPropertyCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of registered global properties. </dd></dl>

</div>
</div>
<a class="anchor" id="a91a4cc8af51ca439ca82b9b6630439b3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::GetGlobalPropertyIndexByDecl </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>decl</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">decl</td><td>The declaration of the property to search for. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The index of the matching property or negative on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asNO_GLOBAL_VAR</td><td>No matching property was found. </td></tr>
    <tr><td class="paramname">asINVALID_DECLARATION</td><td>The given declaration is invalid. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a07e85878869e4d0597c1177d767dc717"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::GetGlobalPropertyIndexByName </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>The name of the property. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The index of the matching property or negative on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asNO_GLOBAL_VAR</td><td>No matching property was found. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a2fb6db9085df3c7d487c0d58de76bb83"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_j_i_t_compiler.html">asIJITCompiler</a>* asIScriptEngine::GetJITCompiler </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Returns a pointer to the JIT compiler </dd></dl>

</div>
</div>
<a class="anchor" id="a9f7cdc52b59034e6e55eb8a56b427aa4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_module.html">asIScriptModule</a>* asIScriptEngine::GetModule </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>module</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ae4cf50de5273eb8c03c6e91e6e014f0c">asEGMFlags</a>&#160;</td>
          <td class="paramname"><em>flag</em> = <code><a class="el" href="angelscript_8h.html#ae4cf50de5273eb8c03c6e91e6e014f0ca2feb963eb04c221e251867bc3a93d79d">asGM_ONLY_IF_EXISTS</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">module</td><td>The name of the module </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flag</td><td>One of the <a class="el" href="angelscript_8h.html#ae4cf50de5273eb8c03c6e91e6e014f0c">asEGMFlags</a> flags </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the module interface</dd></dl>
<p>Use this method to get access to the module interface, which will let you build new scripts, and enumerate functions and types in existing modules.</p>
<p>If <a class="el" href="angelscript_8h.html#ae4cf50de5273eb8c03c6e91e6e014f0ca0843ab784ed9a9ea6cb47d915825186f">asGM_ALWAYS_CREATE</a> is informed as the flag the previous module with the same name will be discarded, thus any pointers that the engine holds to it will be invalid after the call. </p>

</div>
</div>
<a class="anchor" id="a31b95df21e6f1990cf84b3b286067675"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_module.html">asIScriptModule</a>* asIScriptEngine::GetModuleByIndex </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>The index of the module. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the module or null on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a457cf6202cc64ce8ee242dcc97d3422f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> asIScriptEngine::GetModuleCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of modules. </dd></dl>

</div>
</div>
<a class="anchor" id="a39a5f221baa01d43e7471c0e9f5378e4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::GetObjectInGC </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *&#160;</td>
          <td class="paramname"><em>seqNbr</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void **&#160;</td>
          <td class="paramname"><em>obj</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classas_i_type_info.html">asITypeInfo</a> **&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">idx</td><td>The index of the desired object </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">seqNbr</td><td>The sequence number of the obtained object </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">obj</td><td>The object pointer </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">type</td><td>The type of the obtained object </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>The index is not valid </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a413c50ec0410ba4597aa61a461a0c6f6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a>* asIScriptEngine::GetObjectTypeByDecl </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>decl</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000008">Deprecated:</a></b></dt><dd>Since 2.31.0. Use <a class="el" href="classas_i_script_engine.html#ab00808f9b762c4badf508ed511789d1b">asIScriptEngine::GetTypeInfoByDecl</a> instead. </dd></dl>

</div>
</div>
<a class="anchor" id="a6df357909a4eeef6c244393fb4ba69a8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a>* asIScriptEngine::GetObjectTypeById </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>typeId</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000012">Deprecated:</a></b></dt><dd>Since 2.31.0. Use <a class="el" href="classas_i_script_engine.html#a55cc2d9592651538efcf79eb8106a867">asIScriptEngine::GetTypeInfoById</a> instead. </dd></dl>

</div>
</div>
<a class="anchor" id="afac08d4f81e587031c7863574c6783ba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a>* asIScriptEngine::GetObjectTypeByIndex </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>The index of the type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The registered object type interface for the type, or null if not found. </dd></dl>

</div>
</div>
<a class="anchor" id="a3bc0e560eb24c9f2cbba55b1d4b4ea4a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a>* asIScriptEngine::GetObjectTypeByName </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000007">Deprecated:</a></b></dt><dd>Since 2.31.0. Use <a class="el" href="classas_i_script_engine.html#aea2583b8aa724779b7c37df8b7fa437b">asIScriptEngine::GetTypeInfoByName</a> instead. </dd></dl>

</div>
</div>
<a class="anchor" id="ac2667fbe30dd00ed14bc14e6ef7fc725"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> asIScriptEngine::GetObjectTypeCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of object types registered by the application. </dd></dl>

</div>
</div>
<a class="anchor" id="a39b7207a6c4c55a5cbf10eab2ccfb8e6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::GetSizeOfPrimitiveType </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>typeId</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">typeId</td><td>The type id of the type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The size of the type in bytes, or zero if it is not a primitive type.</dd></dl>
<p>This method can be used to return the size of any built-in primitive type, and also for script declared or application registered enums. </p>

</div>
</div>
<a class="anchor" id="afb3935d85494231e2f02af5816ba9830"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::GetStringFactoryReturnTypeId </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> *&#160;</td>
          <td class="paramname"><em>flags</em> = <code>0</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The type id of the type that the string type returns, or a negative value on error. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">flags</td><td>The <a class="el" href="angelscript_8h.html#a335bd4a1384b6e408bf9b37ffdeb54c7">type modifiers</a> for the return type </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asNO_FUNCTION</td><td>The string factory has not been registered. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a3ae23fcde6af0d816ff97097cd443281"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* asIScriptEngine::GetTypeDeclaration </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>typeId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>includeNamespace</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">typeId</td><td>The type id of the type. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">includeNamespace</td><td>Set to true if the namespace should be included in the formatted declaration. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A null terminated string with the type declaration, or null if not found. </dd></dl>

</div>
</div>
<a class="anchor" id="a635cd008ea123b510c66fbddcea735f5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a>* asIScriptEngine::GetTypedefByIndex </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>The index of the typedef. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The type info of the typedef. </dd></dl>

</div>
</div>
<a class="anchor" id="a0ebbbb86ea0e314cc2695f6276ebe507"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> asIScriptEngine::GetTypedefCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of registered typedefs. </dd></dl>

</div>
</div>
<a class="anchor" id="ad1f6fecb0f53fd7966736b01f65c3dcb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::GetTypeIdByDecl </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>decl</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">decl</td><td>The declaration of the type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error, or the type id of the type. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_TYPE</td><td><em>decl</em> is not a valid type.</td></tr>
  </table>
  </dd>
</dl>
<p>Translates a type declaration into a type id. The returned type id is valid for as long as the type is valid, so you can safely store it for later use to avoid potential overhead by calling this function each time. Just remember to update the type id, any time the type is changed within the engine, e.g. when recompiling script declared classes, or changing the engine configuration.</p>
<p>The type id is based on a sequence number and depends on the order in which the type ids are queried, thus is not guaranteed to always be the same for each execution of the application. The <a class="el" href="angelscript_8h.html#ae8c3a67a97321be53181e9ed396ad83a">asETypeIdFlags</a> can be used to obtain some information about the type directly from the id.</p>
<p>A base type yields the same type id whether the declaration is const or not, however if the const is for the subtype then the type id is different, e.g. string@ isn't the same as const string@ but string is the same as const string.</p>
<p>This method is only able to return the type id that are not specific for a script module, i.e. built-in types and application registered types. Type ids for script declared types should be obtained through the script module's <a class="el" href="classas_i_script_module.html#a7fbc2bd888b248d2c2ee2d953b49eefc">GetTypeIdByDecl</a>. </p>

</div>
</div>
<a class="anchor" id="ab00808f9b762c4badf508ed511789d1b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a>* asIScriptEngine::GetTypeInfoByDecl </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>decl</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">decl</td><td>The declaration of the type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The type or null on error.</dd></dl>
<p>Translates a type declaration into the type info. The returned type is valid for as long as the type is valid, so you can safely store it for later use to avoid potential overhead from calling this function each time. Just remember to update the type info pointer any time the type is changed within the engine, e.g. when recompiling script declared classes, or changing the engine configuration. </p>

</div>
</div>
<a class="anchor" id="a55cc2d9592651538efcf79eb8106a867"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a>* asIScriptEngine::GetTypeInfoById </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>typeId</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">typeId</td><td>The type id of the type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The type interface for the type, or null if not found.</dd></dl>
<p>This does not increment the reference count of the returned type. </p>

</div>
</div>
<a class="anchor" id="aea2583b8aa724779b7c37df8b7fa437b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_type_info.html">asITypeInfo</a>* asIScriptEngine::GetTypeInfoByName </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>The name of the type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The type interface for the type, or null if not found.</dd></dl>
<p>This does not increase the reference count of the returned type info. </p>

</div>
</div>
<a class="anchor" id="a701aa6a7ddf51a22c62281f3dec9a772"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptEngine::GetUserData </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>An identifier specifying the user data to get. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The pointer to the user data. </dd></dl>

</div>
</div>
<a class="anchor" id="ab31103bef62096445fe03632de691827"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_lockable_shared_bool.html">asILockableSharedBool</a>* asIScriptEngine::GetWeakRefFlagOfScriptObject </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>The object </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The object type </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The weak ref flag, if the object supports weak references.</dd></dl>
<p>As long as the weak ref flag is not set, the owning object is still alive. Once the weak ref flag is set, the object is dead and should no longer be accessed. Check if the flag is set with the <a class="el" href="classas_i_lockable_shared_bool.html#abab39fc60f00ae8941423258ffc2c3c6">asILockableSharedBool::Get</a> method.</p>
<p>This method doesn't increase the reference to the returned shared boolean. </p>

</div>
</div>
<a class="anchor" id="a282b92f29b371545a6a6f6aa2ccf971e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool asIScriptEngine::IsHandleCompatibleWithObject </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>objTypeId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>handleTypeId</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000013">Deprecated:</a></b></dt><dd>Since 2.30.0. Use <a class="el" href="classas_i_script_engine.html#a32c9d9aac77a67eeb046fc67d7473fa2">asIScriptEngine::RefCastObject</a> instead </dd></dl>

</div>
</div>
<a class="anchor" id="a52a7644b48cbc771e33db5070814f6df"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::NotifyGarbageCollectorOfNewObject </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>A pointer to the newly created object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The type of the object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The sequence number of the added object, or a negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>Either the object or the type is null</td></tr>
  </table>
  </dd>
</dl>
<p>This method should be called when a new garbage collected object is created. The GC will then store a reference to the object so that it can automatically detect whether the object is involved in any circular references that should be released.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_gc_object.html">Garbage collected objects</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a57ecbd86ae9370684877c755e83cef0d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#a012a602727ca3fe1efa27053bc58cbca">asETokenClass</a> asIScriptEngine::ParseToken </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>string</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>stringLength</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *&#160;</td>
          <td class="paramname"><em>tokenLength</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">string</td><td>The string to parse. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">stringLength</td><td>The length of the string. Can be 0 if the string is null terminated. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">tokenLength</td><td>Gives the length of the identified token. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>One of the <a class="el" href="angelscript_8h.html#a012a602727ca3fe1efa27053bc58cbca">asETokenClass</a> values.</dd></dl>
<p>This function is useful for those applications that want to tokenize strings into tokens that the script language uses, e.g. IDEs providing syntax highlighting, or intellisense. It can also be used to parse the meta data strings that may be declared for script entities. </p>

</div>
</div>
<a class="anchor" id="a32c9d9aac77a67eeb046fc67d7473fa2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RefCastObject </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td>
          <td class="paramname"><em>fromType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td>
          <td class="paramname"><em>toType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void **&#160;</td>
          <td class="paramname"><em>newPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>useOnlyImplicitCast</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>A pointer to the object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fromType</td><td>The type of the object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">toType</td><td>The desired type for the cast. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">newPtr</td><td>The new pointer to the object if successful. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">useOnlyImplicitCast</td><td>If only the implicit reference cast operators should be used. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>A null pointer was supplied</td></tr>
  </table>
  </dd>
</dl>
<p>This method is used to cast an pointer to a different type. While both the new and old pointers are expected to refer to the same instance, the address of the pointers are not necessarily the same.</p>
<p>If the cast is successful the <em>newPtr</em> will be set to the new pointer, and the reference counter will be incremented. If the cast is not successful, the <em>newPtr</em> will be set to null, and the reference count left unchanged. </p>

</div>
</div>
<a class="anchor" id="ac9451feece1297eba8d1649036039e82"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterDefaultArrayType </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>type</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The name of the template type, e.g. array&lt;T&gt; </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_TYPE</td><td>The type is not a template type </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="abed6e77f2a532c8a4f528650fa137d37"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterEnum </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>type</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The name of the enum type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_NAME</td><td><em>type</em> is null. </td></tr>
    <tr><td class="paramname">asALREADY_REGISTERED</td><td>Another type with this name already exists. </td></tr>
    <tr><td class="paramname">asERROR</td><td>The <em>type</em> couldn't be parsed. </td></tr>
    <tr><td class="paramname">asINVALID_NAME</td><td>The <em>type</em> is not an identifier, or it is a reserved keyword. </td></tr>
    <tr><td class="paramname">asNAME_TAKEN</td><td>The type name is already taken.</td></tr>
  </table>
  </dd>
</dl>
<p>This method registers an enum type in the engine. The enum values should then be registered with <a class="el" href="classas_i_script_engine.html#a4d331153596dd39838f3bed2a861af18">RegisterEnumValue</a>. </p>

</div>
</div>
<a class="anchor" id="a4d331153596dd39838f3bed2a861af18"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterEnumValue </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The name of the enum type. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>The name of the enum value. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The integer value of the enum value. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asWRONG_CONFIG_GROUP</td><td>The enum <em>type</em> was registered in a different configuration group. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The <em>type</em> is invalid. </td></tr>
    <tr><td class="paramname">asALREADY_REGISTERED</td><td>The <em>name</em> is already registered for this enum.</td></tr>
  </table>
  </dd>
</dl>
<p>This method registers an enum value for a previously registered enum type. </p>

</div>
</div>
<a class="anchor" id="a03c1a2cc23ae4b742c927f3472a1a4f7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterFuncdef </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>decl</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">decl</td><td>The declaration of the function definition. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>decl</em> parameter is not given. </td></tr>
    <tr><td class="paramname">asINVALID_DECLARATION</td><td><em>decl</em> is not a valid function definition. </td></tr>
    <tr><td class="paramname">asNAME_TAKEN</td><td>The name of the funcdef conflicts with another name.</td></tr>
  </table>
  </dd>
</dl>
<p><a class="el" href="doc_datatypes_funcptr.html">Funcdefs</a> are used to define the signature of function pointers. If the application is going to receive function pointers from scripts, it is necessary to first register the funcdef before registering the function or property that will be used to receive it.</p>
<p>Funcdefs are usually registered as global entities, but can also be registered as a child of a class. To do this simply prefix the name of the funcdef with the name of the class and the scope operator to specify which class should be the owner. </p>

</div>
</div>
<a class="anchor" id="a2f84b9b51733f22c68b8448b02c2f1c7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterGlobalFunction </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>declaration</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> &amp;&#160;</td>
          <td class="paramname"><em>funcPointer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a>&#160;</td>
          <td class="paramname"><em>callConv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>auxiliary</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">declaration</td><td>The declaration of the global function in script syntax. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">funcPointer</td><td>The function pointer. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">callConv</td><td>The calling convention for the function. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">auxiliary</td><td>A helper object for use with some calling conventions. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error, or the function id if successful. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asNOT_SUPPORTED</td><td>The calling convention is not supported. </td></tr>
    <tr><td class="paramname">asWRONG_CALLING_CONV</td><td>The function's calling convention doesn't match <em>callConv</em>. </td></tr>
    <tr><td class="paramname">asINVALID_DECLARATION</td><td>The function declaration is invalid. </td></tr>
    <tr><td class="paramname">asNAME_TAKEN</td><td>The function name is already used elsewhere. </td></tr>
    <tr><td class="paramname">asALREADY_REGISTERED</td><td>The function has already been registered with the same parameter list. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>auxiliary</em> pointer wasn't set according to calling convention.</td></tr>
  </table>
  </dd>
</dl>
<p>This method registers system functions that the scripts may use to communicate with the host application.</p>
<p>The <em>auxiliary</em> pointer can optionally be used with <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a750c26b6a6e0c9ccbb93078f532ef8ce">asCALL_GENERIC</a>. For the calling convention <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4aa241a0c1deedaa2d55eb99a83829efad">asCALL_THISCALL_ASGLOBAL</a> the <em>auxiliary</em> is required.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_register_func.html">Registering a function</a> </dd></dl>

</div>
</div>
<a class="anchor" id="aacd32f32b2922b8ffaed204812013169"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterGlobalProperty </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>declaration</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>pointer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">declaration</td><td>The declaration of the global property in script syntax. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pointer</td><td>The address of the property that will be used to access the property value. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_DECLARATION</td><td>The declaration has invalid syntax. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The declaration is a reference. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The pointer is null. </td></tr>
    <tr><td class="paramname">asNAME_TAKEN</td><td>The name is already taken.</td></tr>
  </table>
  </dd>
</dl>
<p>Use this method to register a global property that the scripts will be able to access as global variables. The property may optionally be registered as const, if the scripts shouldn't be allowed to modify it.</p>
<p>When registering the property, the application must pass the address to the actual value. The application must also make sure that this address remains valid throughout the life time of this registration, i.e. until the engine is released or the dynamic configuration group is removed. </p>

</div>
</div>
<a class="anchor" id="ae2d89b82561b7f9843f35693c664589f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterInterface </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>The name of the interface. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_NAME</td><td>The <em>name</em> is null, or a reserved keyword. </td></tr>
    <tr><td class="paramname">asALREADY_REGISTERED</td><td>An object type with this name already exists. </td></tr>
    <tr><td class="paramname">asERROR</td><td>The <em>name</em> is not a proper identifier. </td></tr>
    <tr><td class="paramname">asNAME_TAKEN</td><td>The <em>name</em> is already used elsewhere.</td></tr>
  </table>
  </dd>
</dl>
<p>This registers an interface that script classes can implement. By doing this the application can register functions and methods that receives an <a class="el" href="classas_i_script_object.html">asIScriptObject</a> and still be sure that the class implements certain methods needed by the application.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_use_script_class.html#doc_use_script_class_3">Receiving script classes</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a43bd2c12c94a55c22be76d209de93f1a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterInterfaceMethod </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>intf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>declaration</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">intf</td><td>The name of the interface. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">declaration</td><td>The method declaration. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asWRONG_CONFIG_GROUP</td><td>The interface was registered in another configuration group. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td><em>intf</em> is not an interface type. </td></tr>
    <tr><td class="paramname">asINVALID_DECLARATION</td><td>The <em>declaration</em> is invalid. </td></tr>
    <tr><td class="paramname">asNAME_TAKEN</td><td>The method name is already taken.</td></tr>
  </table>
  </dd>
</dl>
<p>This registers a method that the class that implements the script interface must have. </p>

</div>
</div>
<a class="anchor" id="ad69bc821a7f1120369c1bd9526f41b9c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterObjectBehaviour </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a7e38df5b10ec8cbf2a688f1d114097c5">asEBehaviours</a>&#160;</td>
          <td class="paramname"><em>behaviour</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>declaration</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> &amp;&#160;</td>
          <td class="paramname"><em>funcPointer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a>&#160;</td>
          <td class="paramname"><em>callConv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>auxiliary</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>The name of the type. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">behaviour</td><td>One of the object behaviours from <a class="el" href="angelscript_8h.html#a7e38df5b10ec8cbf2a688f1d114097c5">asEBehaviours</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">declaration</td><td>The declaration of the method in script syntax. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">funcPointer</td><td>The method or function pointer. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">callConv</td><td>The calling convention for the method or function. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">auxiliary</td><td>A helper object for use with some calling conventions. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error, or the function id is successful. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asWRONG_CONFIG_GROUP</td><td>The object type was registered in a different configuration group. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td><em>obj</em> is not set, or a global behaviour is given in <em>behaviour</em>. </td></tr>
    <tr><td class="paramname">asWRONG_CALLING_CONV</td><td>The function's calling convention isn't compatible with <em>callConv</em>. </td></tr>
    <tr><td class="paramname">asNOT_SUPPORTED</td><td>The calling convention or the behaviour signature is not supported. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The <em>obj</em> parameter is not a valid object name. </td></tr>
    <tr><td class="paramname">asINVALID_DECLARATION</td><td>The <em>declaration</em> is invalid. </td></tr>
    <tr><td class="paramname">asILLEGAL_BEHAVIOUR_FOR_TYPE</td><td>The <em>behaviour</em> is not allowed for this type. </td></tr>
    <tr><td class="paramname">asALREADY_REGISTERED</td><td>The behaviour is already registered with the same signature. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>objForThiscall</em> pointer wasn't set according to calling convention.</td></tr>
  </table>
  </dd>
</dl>
<p>Use this method to register behaviour functions that will be called by the virtual machine to perform certain operations, such as memory management, math operations, comparisons, etc.</p>
<p>The <em>declaration</em> must form a valid function signature, but the give function name will not be used or stored in the application so there is no need to provide a meaningful function name.</p>
<p>The <em>auxiliary</em> pointer can optionally be used with <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a750c26b6a6e0c9ccbb93078f532ef8ce">asCALL_GENERIC</a>. For the calling conventions <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4aa241a0c1deedaa2d55eb99a83829efad">asCALL_THISCALL_ASGLOBAL</a>, <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a613a388ed51315f6fce19f3824d6b17a">asCALL_THISCALL_OBJFIRST</a> and asCALL_THISCALL_OBJLAST the <em>auxiliary</em> is required.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_register_func.html">Registering a function</a>, <a class="el" href="doc_reg_opbeh.html">Registering operator behaviours</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a1d42c5d9fd06a07da279f491f8901317"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterObjectMethod </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>declaration</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> &amp;&#160;</td>
          <td class="paramname"><em>funcPointer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a>&#160;</td>
          <td class="paramname"><em>callConv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>auxiliary</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>The name of the type. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">declaration</td><td>The declaration of the method in script syntax. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">funcPointer</td><td>The method or function pointer. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">callConv</td><td>The calling convention for the method or function. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">auxiliary</td><td>A helper object for use with some calling conventions. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error, or the function id if successful. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asWRONG_CONFIG_GROUP</td><td>The object type was registered in a different configuration group. </td></tr>
    <tr><td class="paramname">asNOT_SUPPORTED</td><td>The calling convention is not supported. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The <em>obj</em> parameter is not a valid object name. </td></tr>
    <tr><td class="paramname">asINVALID_DECLARATION</td><td>The <em>declaration</em> is invalid. </td></tr>
    <tr><td class="paramname">asNAME_TAKEN</td><td>The name conflicts with other members. </td></tr>
    <tr><td class="paramname">asWRONG_CALLING_CONV</td><td>The function's calling convention isn't compatible with <em>callConv</em>. </td></tr>
    <tr><td class="paramname">asALREADY_REGISTERED</td><td>The method has already been registered with the same parameter list. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>auxiliary</em> pointer wasn't set according to calling convention.</td></tr>
  </table>
  </dd>
</dl>
<p>Use this method to register a member method for the type. The method that is registered may be an actual class method, or a global function that takes the object pointer as either the first or last parameter. Or it may be a global function implemented with the generic calling convention.</p>
<p>The <em>auxiliary</em> pointer can optionally be used with <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a750c26b6a6e0c9ccbb93078f532ef8ce">asCALL_GENERIC</a>. For the calling conventions <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a613a388ed51315f6fce19f3824d6b17a">asCALL_THISCALL_OBJFIRST</a> and asCALL_THISCALL_OBJLAST the <em>auxiliary</em> is required.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_register_func.html">Registering a function</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a33f3cd249307f5f11120a395579410f6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterObjectProperty </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>declaration</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>byteOffset</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>The name of the type. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">declaration</td><td>The property declaration in script syntax. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">byteOffset</td><td>The offset into the memory block where this property is found. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asWRONG_CONFIG_GROUP</td><td>The object type was registered in a different configuration group. </td></tr>
    <tr><td class="paramname">asINVALID_OBJECT</td><td>The <em>obj</em> does not specify an object type. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The <em>obj</em> parameter has invalid syntax. </td></tr>
    <tr><td class="paramname">asINVALID_DECLARATION</td><td>The <em>declaration</em> is invalid. </td></tr>
    <tr><td class="paramname">asNAME_TAKEN</td><td>The name conflicts with other members.</td></tr>
  </table>
  </dd>
</dl>
<p>Use this method to register a member property of a class. The property must be local to the object, i.e. not a global variable or a static member. The easiest way to get the offset of the property is to use the asOFFSET macro.</p>
<div class="fragment"><div class="line"><span class="keyword">struct </span>MyType {<span class="keywordtype">float</span> prop;};</div>
<div class="line">r = engine-&gt;<a class="code" href="classas_i_script_engine.html#a33f3cd249307f5f11120a395579410f6" title="Registers a property for the object type.">RegisterObjectProperty</a>(<span class="stringliteral">&quot;MyType&quot;</span>, <span class="stringliteral">&quot;float prop&quot;</span>, <a class="code" href="angelscript_8h.html#a717eccea17214bc1eb64bb9789c4915a" title="Returns the offset of an attribute in a struct.">asOFFSET</a>(MyType, prop)));</div>
</div><!-- fragment --> 
</div>
</div>
<a class="anchor" id="a29c6c087c8c5b5cdb6271cfd161cc5a6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterObjectType </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>byteSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a>&#160;</td>
          <td class="paramname"><em>flags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>The name of the type. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">byteSize</td><td>The size of the type in bytes. Only necessary for value types. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>One or more of the asEObjTypeFlags. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The type id on success or a negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>The flags are invalid. </td></tr>
    <tr><td class="paramname">asINVALID_NAME</td><td>The name is invalid. </td></tr>
    <tr><td class="paramname">asALREADY_REGISTERED</td><td>Another type of the same name already exists. </td></tr>
    <tr><td class="paramname">asNAME_TAKEN</td><td>The name conflicts with other symbol names. </td></tr>
    <tr><td class="paramname">asLOWER_ARRAY_DIMENSION_NOT_REGISTERED</td><td>When registering an array type the array element must be a primitive or a registered type. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The array type was not properly formed. </td></tr>
    <tr><td class="paramname">asNOT_SUPPORTED</td><td>The array type is not supported, or already in use preventing it from being overloaded.</td></tr>
  </table>
  </dd>
</dl>
<p>Use this method to register new types that should be available to the scripts. Reference types, which have their memory managed by the application, should be registered with <a class="el" href="angelscript_8h.html#a855d86fa9ee15b9f75e553ee376b5c7aa9450e038342b36c745858d2e5ae4b861">asOBJ_REF</a>. Value types, which have their memory managed by the engine, should be registered with <a class="el" href="angelscript_8h.html#a855d86fa9ee15b9f75e553ee376b5c7aa9fc16a8ac0f30f9ff9c6568e0b7be91d">asOBJ_VALUE</a>.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_register_type.html">Registering an object type</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ac238aa44f91bad0b9025d956c5555575"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterStringFactory </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>datatype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> &amp;&#160;</td>
          <td class="paramname"><em>factoryFunc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a>&#160;</td>
          <td class="paramname"><em>callConv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>auxiliary</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">datatype</td><td>The datatype that the string factory returns </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">factoryFunc</td><td>The pointer to the factory function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">callConv</td><td>The calling convention of the factory function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">auxiliary</td><td>A helper object for use with some calling conventions. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error, or the function id if successful. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asNOT_SUPPORTED</td><td>The calling convention is not supported. </td></tr>
    <tr><td class="paramname">asWRONG_CALLING_CONV</td><td>The function's calling convention doesn't match <em>callConv</em>. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The <em>datatype</em> is not a valid type.</td></tr>
  </table>
  </dd>
</dl>
<p>Use this function to register a string factory that will be called when the virtual machine finds a string constant in an expression. The string factory function will receive two parameters, the length of the string constant in bytes and a pointer to the character data. The factory should return a value to a previously registered type that will represent the string. Example:</p>
<div class="fragment"><div class="line"><span class="comment">// Our string factory implementation</span></div>
<div class="line">std::string StringFactory(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> byteLength, <span class="keyword">const</span> <span class="keywordtype">char</span> *s)</div>
<div class="line">{</div>
<div class="line">    <span class="keywordflow">return</span> std::string(s, byteLength);</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="comment">// Registering the string factory</span></div>
<div class="line"><span class="keywordtype">int</span> r = engine-&gt;<a class="code" href="classas_i_script_engine.html#ac238aa44f91bad0b9025d956c5555575" title="Registers the string factory.">RegisterStringFactory</a>(<span class="stringliteral">&quot;string&quot;</span>, <a class="code" href="angelscript_8h.html#a78f8f2c7f1c88b12e74a5ac47b4184ae" title="Returns an asSFuncPtr representing the function specified by the name.">asFUNCTION</a>(StringFactory), <a class="code" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a68ae43cc91cdfc3fa4590c9e6164e4f4" title="A cdecl function.">asCALL_CDECL</a>); assert( r &gt;= 0 );</div>
</div><!-- fragment --><p>The example assumes that the std::string type has been registered as the string type, with <a class="el" href="classas_i_script_engine.html#a29c6c087c8c5b5cdb6271cfd161cc5a6">RegisterObjectType</a>.</p>
<p>The <em>auxiliary</em> pointer can optionally be used with <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a750c26b6a6e0c9ccbb93078f532ef8ce">asCALL_GENERIC</a>. For the calling convention <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4aa241a0c1deedaa2d55eb99a83829efad">asCALL_THISCALL_ASGLOBAL</a> the <em>auxiliary</em> is required. </p>

</div>
</div>
<a class="anchor" id="addb24466769dc52be96c7e37d5305245"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RegisterTypedef </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>decl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The name of the new typedef </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">decl</td><td>The datatype that the typedef represents </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_NAME</td><td>The <em>type</em> is null. </td></tr>
    <tr><td class="paramname">asALREADY_REGISTERED</td><td>A type with the same name already exists. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The <em>decl</em> is not a primitive type. </td></tr>
    <tr><td class="paramname">asINVALID_NAME</td><td>The <em>type</em> is not an identifier, or it is a reserved keyword. </td></tr>
    <tr><td class="paramname">asNAME_TAKEN</td><td>The name is already used elsewhere.</td></tr>
  </table>
  </dd>
</dl>
<p>This method registers an alias for a data type.</p>
<p>Currently typedefs can only be registered for built-in primitive types. </p>

</div>
</div>
<a class="anchor" id="aae91a45da75af9234b87e825b5c08b81"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::Release </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of references to this object.</dd></dl>
<p>Call this method when you will no longer use the references that you own.</p>
<p>If you know that the engine is supposed to be shut down, then it is recommended to call the <a class="el" href="classas_i_script_engine.html#a28c3800620d4aeaca75d084391eb758e">ShutDownAndRelease</a> method instead. </p>

</div>
</div>
<a class="anchor" id="a82873d3769ded547894a7c3d52c220fd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::ReleaseScriptObject </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classas_i_type_info.html">asITypeInfo</a> *&#160;</td>
          <td class="paramname"><em>type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>A pointer to the object. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The type of the object.</td></tr>
  </table>
  </dd>
</dl>
<p>This calls the release method of the object to release the reference.</p>
<p>If the type is a value type, the method will destroy the object and deallocate the memory using the <a class="el" href="angelscript_8h.html#a527ab125defc58aa40cc151a25582a31">default memory routine</a>. </p>

</div>
</div>
<a class="anchor" id="ab607be7fe727cdcce502d2beedbf4c0a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::RemoveConfigGroup </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>groupName</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">groupName</td><td>The name of the configuration group </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONFIG_GROUP_IS_IN_USE</td><td>The group is in use and cannot be removed.</td></tr>
  </table>
  </dd>
</dl>
<p>Remove the configuration group. If something in the configuration group is currently in use, the function will return with an error code. Examples of uses are compiled modules that have function calls to functions in the group and global variables of types registered in the group.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_adv_dynamic_config.html">Dynamic configurations</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a32391ee83e58083b406ba068ab2ee049"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_context.html">asIScriptContext</a>* asIScriptEngine::RequestContext </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>An unprepared context</dd></dl>
<p>This method will invoke the registered request context callback and return an available context in an unprepared state.</p>
<p>Contexts obtained through this method shouldn't be released, instead they should be returned to the origin with a call to <a class="el" href="classas_i_script_engine.html#a22e42bf32902cbd6885731a6beeaca20">ReturnContext</a>.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classas_i_script_engine.html#a2630e1cd03ffab0fee9b820bf0afe42a">CreateContext</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a22e42bf32902cbd6885731a6beeaca20"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::ReturnContext </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classas_i_script_context.html">asIScriptContext</a> *&#160;</td>
          <td class="paramname"><em>ctx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>The context that should be returned to the origin </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ae5ba9fe99b72c60392cdaeef164f2c65"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::SetContextCallbacks </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a23f3c055107b52e232a7884c4f649f22">asREQUESTCONTEXTFUNC_t</a>&#160;</td>
          <td class="paramname"><em>requestCtx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a87ef2f38dfff65c88902d346d752958e">asRETURNCONTEXTFUNC_t</a>&#160;</td>
          <td class="paramname"><em>returnCtx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>param</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">requestCtx</td><td>The request context callback function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">returnCtx</td><td>The return context callback function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">param</td><td>An optional parameter that will be passed to the callback </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>Only one of the context functions is informed</td></tr>
  </table>
  </dd>
</dl>
<p>This method can be used by the application to implement a context pool, or to perform custom configuration on the contexts that the engine uses internally.</p>
<p>This can for example be used to debug calls to initialize global variables when building modules, or to detect script exceptions that may occur in script class destructors when called from the garbage collector. </p>

</div>
</div>
<a class="anchor" id="acaced7eb9ebe013ede23f7593daf58e3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::SetContextUserDataCleanupCallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a88ecc3288f67d86c6dd9d8d24d9980ca">asCLEANCONTEXTFUNC_t</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A pointer to the function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>An identifier specifying which user data the callback is to be used with.</td></tr>
  </table>
  </dd>
</dl>
<p>The function given with this call will be invoked when a context is destroyed if any <a class="el" href="classas_i_script_context.html#a263dc70abb2a8c77adcea7c9ede0a479">user data</a> has been registered with the context.</p>
<p>The function is called from within the context destructor, so the callback should not be used for anything but cleaning up the user data itself. </p>

</div>
</div>
<a class="anchor" id="a570df3e676f2d9e03e87d97b8cede1c7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> asIScriptEngine::SetDefaultAccessMask </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a>&#160;</td>
          <td class="paramname"><em>defaultMask</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">defaultMask</td><td>The default access bit mask. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The previous default mask.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_adv_access_mask.html">Access masks and exposing different interfaces</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a605f114814f1f64804c04391816d948b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::SetDefaultNamespace </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>nameSpace</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">nameSpace</td><td>The namespace that should be used. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>The namespace is invalid</td></tr>
  </table>
  </dd>
</dl>
<p>Call this method to set the default namespace for which the following calls should assume. This applies to registration of the application interface and also to the functions that searches for registered entities.</p>
<p>Nested namespaces can be informed by separating them with the scope token, i.e. :: </p>

</div>
</div>
<a class="anchor" id="a1bce4e5f573a2ca0ff55163e28f761dd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::SetEngineProperty </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a53c2e8a74ade77c928316396394ebe0f">asEEngineProp</a>&#160;</td>
          <td class="paramname"><em>property</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">property</td><td>One of the <a class="el" href="angelscript_8h.html#a53c2e8a74ade77c928316396394ebe0f">asEEngineProp</a> values. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The new value of the property. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>Invalid property.</td></tr>
  </table>
  </dd>
</dl>
<p>With this method you can change the way the script engine works in some regards. </p>

</div>
</div>
<a class="anchor" id="a8fa4fc9aacb99db6d4be0a5542b85e35"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::SetEngineUserDataCleanupCallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ab4583fe7648248c59f525f944cfb9db1">asCLEANENGINEFUNC_t</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A pointer to the function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>An identifier specifying which user data the callback is to be used with.</td></tr>
  </table>
  </dd>
</dl>
<p>The function given with this call will be invoked when the engine is destroyed if any <a class="el" href="classas_i_script_engine.html#aabee8d6ef426c434adee85ec6d57f940">user data</a> has been registered with the engine.</p>
<p>The function is called from within the engine destructor, so the callback should not be used for anything but cleaning up the user data itself. </p>

</div>
</div>
<a class="anchor" id="ae75ee087fe6608cf0af1c24794ca73c7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::SetFunctionUserDataCleanupCallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ae396d162d9d46c34a7f197ecbc788dfa">asCLEANFUNCTIONFUNC_t</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A pointer to the function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>An identifier specifying which user data the callback is to be used with.</td></tr>
  </table>
  </dd>
</dl>
<p>The function given with this call will be invoked when a function is destroyed if any <a class="el" href="classas_i_script_function.html#a9dd036ce8e91d335eb5a3ad8851f1a41">user data</a> has been registered with the function.</p>
<p>The function is called from within the function destructor, so the callback should not be used for anything but cleaning up the user data itself. </p>

</div>
</div>
<a class="anchor" id="aee4f910163604203a27db1ffea3b1c9c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::SetJITCompiler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classas_i_j_i_t_compiler.html">asIJITCompiler</a> *&#160;</td>
          <td class="paramname"><em>compiler</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">compiler</td><td>A pointer to the JIT compiler </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error.</dd></dl>
<p>This method is used to set the JIT compiler. The engine will automatically invoke the JIT compiler when it is set after compiling scripts or loading pre-compiled byte code.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_adv_jit.html">How to build a JIT compiler</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a74192fe950808eb72a64e3e371f0ea02"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::SetMessageCallback </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> &amp;&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a>&#160;</td>
          <td class="paramname"><em>callConv</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A function or class method pointer. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>The object for methods, or an optional parameter for functions. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">callConv</td><td>The calling convention. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value for an error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>One of the arguments is incorrect, e.g. obj is null for a class method. </td></tr>
    <tr><td class="paramname">asNOT_SUPPORTED</td><td>The arguments are not supported, e.g. asCALL_GENERIC.</td></tr>
  </table>
  </dd>
</dl>
<p>This method sets the callback routine that will receive compiler messages. The callback routine can be either a class method, e.g: </p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> MyClass::MessageCallback(<span class="keyword">const</span> <a class="code" href="structas_s_message_info.html" title="Represents a compiler message.">asSMessageInfo</a> *msg);</div>
<div class="line">r = engine-&gt;<a class="code" href="classas_i_script_engine.html#a74192fe950808eb72a64e3e371f0ea02" title="Sets a message callback that will receive compiler messages.">SetMessageCallback</a>(<a class="code" href="angelscript_8h.html#a7345e6b3afabec24efd0ff77886d49a6" title="Returns an asSFuncPtr representing the class method specified by class and method name...">asMETHOD</a>(MyClass,MessageCallback), &amp;obj, <a class="code" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4aea516c8742acc1edff6a43dc1bb09e96" title="A thiscall class method.">asCALL_THISCALL</a>);</div>
</div><!-- fragment --><p> or a global function, e.g: </p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> MessageCallback(<span class="keyword">const</span> <a class="code" href="structas_s_message_info.html" title="Represents a compiler message.">asSMessageInfo</a> *msg, <span class="keywordtype">void</span> *param);</div>
<div class="line">r = engine-&gt;<a class="code" href="classas_i_script_engine.html#a74192fe950808eb72a64e3e371f0ea02" title="Sets a message callback that will receive compiler messages.">SetMessageCallback</a>(<a class="code" href="angelscript_8h.html#a78f8f2c7f1c88b12e74a5ac47b4184ae" title="Returns an asSFuncPtr representing the function specified by the name.">asFUNCTION</a>(MessageCallback), param, <a class="code" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a68ae43cc91cdfc3fa4590c9e6164e4f4" title="A cdecl function.">asCALL_CDECL</a>);</div>
</div><!-- fragment --><p> It is recommended to register the message callback routine right after creating the engine, as some of the registration functions can provide useful information to better explain errors. </p>

</div>
</div>
<a class="anchor" id="a7523853b9a9bf7dab603fa6a06393d51"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::SetModuleUserDataCleanupCallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a90d681aba2f00b701425d4dbdca3375b">asCLEANMODULEFUNC_t</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A pointer to the function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>An identifier specifying which user data the callback is to be used with.</td></tr>
  </table>
  </dd>
</dl>
<p>The function given with this call will be invoked when the module is destroyed if any <a class="el" href="classas_i_script_module.html#a06582e57e7101df4157ee36c81867c13">user data</a> has been registered with the module.</p>
<p>The function is called from within the module destructor, so the callback should not be used for anything but cleaning up the user data itself. </p>

</div>
</div>
<a class="anchor" id="a8d4f19fe2d40d9da10c01a93f855b593"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::SetObjectTypeUserDataCleanupCallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a89a55274ab9acfc45fcd29247299f42f">asCLEANTYPEINFOFUNC_t</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000014">Deprecated:</a></b></dt><dd>Since 2.31.0. Use <a class="el" href="classas_i_script_engine.html#afa31e7c28c63a2c876d8e08305cf5d75">asIScriptEngine::SetTypeInfoUserDataCleanupCallback</a> instead. </dd></dl>

</div>
</div>
<a class="anchor" id="a4654e2cae0690c50e19b177f1ec54592"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::SetScriptObjectUserDataCleanupCallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac29678e8c7f48b9c2aaabae90ee258d1">asCLEANSCRIPTOBJECTFUNC_t</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A pointer to the function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>An identifier specifying which user data the callback is to be used with.</td></tr>
  </table>
  </dd>
</dl>
<p>The function given with this call will be invoked when a script object instance is destroyed if any <a class="el" href="classas_i_script_object.html#ac85cea9bca5dd3868e027285e44dd6d0">user data</a> has been registered with the type.</p>
<p>The function is called from within the script object destructor, so the callback should not be used for anything but cleaning up the user data itself. </p>

</div>
</div>
<a class="anchor" id="afa31e7c28c63a2c876d8e08305cf5d75"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptEngine::SetTypeInfoUserDataCleanupCallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a89a55274ab9acfc45fcd29247299f42f">asCLEANTYPEINFOFUNC_t</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A pointer to the function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>An identifier specifying which user data the callback is to be used with.</td></tr>
  </table>
  </dd>
</dl>
<p>The function given with this call will be invoked when a type info is destroyed if any <a class="el" href="classas_i_type_info.html#a5e8ea071f1c1f3b7c6dfc1950bec73f4">user data</a> has been registered with the type.</p>
<p>The function is called from within the type info destructor, so the callback should not be used for anything but cleaning up the user data itself. </p>

</div>
</div>
<a class="anchor" id="aabee8d6ef426c434adee85ec6d57f940"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptEngine::SetUserData </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>A pointer to the user data. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>An identifier specifying the user data to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The previous pointer stored in the engine.</dd></dl>
<p>This method allows the application to associate a value, e.g. a pointer, with the engine instance.</p>
<p>The type values 1000 through 1999 are reserved for use by the official add-ons.</p>
<p>Optionally, a callback function can be <a class="el" href="classas_i_script_engine.html#a8fa4fc9aacb99db6d4be0a5542b85e35">registered</a> to clean up the user data when the engine is destroyed. </p>

</div>
</div>
<a class="anchor" id="a28c3800620d4aeaca75d084391eb758e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::ShutDownAndRelease </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of references to this object.</dd></dl>
<p>Call this method when you know it is time to shut down the engine. This will automatically discard all the script modules and run a complete garbage collection cycle.</p>
<p>Calling this method rather than the ordinary <a class="el" href="classas_i_script_engine.html#aae91a45da75af9234b87e825b5c08b81">Release</a> method will avoid potential memory leaks if for example there are objects in the modules or garbage collector that indirectly holds a reference to the engine. </p>

</div>
</div>
<a class="anchor" id="a936ce6566af958bb75ba1c0945d8b03a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptEngine::WriteMessage </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>section</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>row</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>col</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a8badcd23652646db5c5c6981dc73d4f5">asEMsgType</a>&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>message</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">section</td><td>The name of the script section. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">row</td><td>The row number. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">col</td><td>The column number. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The message type. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">message</td><td>The message text. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>The section or message is null.</td></tr>
  </table>
  </dd>
</dl>
<p>This method can be used by the application to write messages to the same message callback that the script compiler uses. This is useful for example if a preprocessor is used. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="angelscript_8h.html">angelscript.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classas_i_script_engine.html">asIScriptEngine</a></li>
    <li class="footer">Generated on Sun Dec 18 2016 12:35:31 for AngelScript by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.3.1 </li>
  </ul>
</div>
</body>
</html>
